/**
* A NormalizedNode holding the contents of an {@code anydata} node in some object model. This interface is a common
- * capture for all object model specializations.
+ * capture for all object model specializations -- such as {@link OpaqueAnydataNode}.
*
* @param <V> Value type, uniquely identifying the object model used for values
*/
--- /dev/null
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. 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.yangtools.yang.data.api.schema;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.data.api.schema.opaque.OpaqueData;
+
+/**
+ * An {@code anydata} node with an {@link OpaqueData} payload.
+ */
+@Beta
+public interface OpaqueAnydataNode extends AnydataNode<OpaqueData> {
+ @Override
+ default Class<OpaqueData> getValueObjectModel() {
+ return OpaqueData.class;
+ }
+}
*/
package org.opendaylight.yangtools.yang.data.impl.schema;
+import com.google.common.annotations.Beta;
import javax.xml.transform.dom.DOMSource;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.odlext.model.api.YangModeledAnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.data.api.schema.OpaqueAnydataNode;
import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
import org.opendaylight.yangtools.yang.data.api.schema.YangModeledAnyXmlNode;
+import org.opendaylight.yangtools.yang.data.api.schema.opaque.OpaqueData;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeSchemaAwareBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeSchemaAwareBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOpaqueAnydataNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedLeafSetNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedLeafSetNodeSchemaAwareBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedMapNodeBuilder;
return ImmutableYangModeledAnyXmlNodeBuilder.create(schema);
}
+ @Beta
+ public static @NonNull NormalizedNodeBuilder<NodeIdentifier, OpaqueData, OpaqueAnydataNode> opaqueAnydataBuilder() {
+ return ImmutableOpaqueAnydataNodeBuilder.create();
+ }
+
public static <T> ListNodeBuilder<T, LeafSetEntryNode<T>> orderedLeafSetBuilder() {
return ImmutableOrderedLeafSetNodeBuilder.create();
}
--- /dev/null
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. 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.yangtools.yang.data.impl.schema.builder.impl;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableNormalizedSimpleValueNode;
+
+@Beta
+public abstract class AbstractImmutableAnydataNodeBuilder<V, T extends AnydataNode<V>>
+ extends AbstractImmutableNormalizedNodeBuilder<NodeIdentifier, V, T> {
+ protected AbstractImmutableAnydataNodeBuilder() {
+
+ }
+
+ protected abstract static class AbstractImmutableAnydataNode<V>
+ extends AbstractImmutableNormalizedSimpleValueNode<NodeIdentifier, V> implements AnydataNode<V> {
+ protected AbstractImmutableAnydataNode(final NodeIdentifier nodeIdentifier, final V value) {
+ super(nodeIdentifier, value);
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. 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.yangtools.yang.data.impl.schema.builder.impl;
+
+import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.OpaqueAnydataNode;
+import org.opendaylight.yangtools.yang.data.api.schema.opaque.OpaqueData;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeBuilder;
+
+@Beta
+public class ImmutableOpaqueAnydataNodeBuilder
+ extends AbstractImmutableAnydataNodeBuilder<OpaqueData, OpaqueAnydataNode> {
+ protected ImmutableOpaqueAnydataNodeBuilder() {
+
+ }
+
+ public static @NonNull NormalizedNodeBuilder<NodeIdentifier, OpaqueData, OpaqueAnydataNode> create() {
+ return new ImmutableOpaqueAnydataNodeBuilder();
+ }
+
+ @Override
+ public OpaqueAnydataNode build() {
+ return new ImmutableOpaqueAnydataNode<>(getNodeIdentifier(), getValue());
+ }
+
+ private static final class ImmutableOpaqueAnydataNode<T> extends AbstractImmutableAnydataNode<OpaqueData>
+ implements OpaqueAnydataNode {
+ ImmutableOpaqueAnydataNode(final NodeIdentifier nodeIdentifier, final OpaqueData value) {
+ super(nodeIdentifier, value);
+ }
+ }
+}