Bump MRI upstreams
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / util / RpcStructureTransformer.java
index 17959667b31c48ee5309d2b119a45f97c4c8fc6a..fe14154b1466c1728a570306401bf6c92881d62f 100644 (file)
@@ -7,9 +7,11 @@
  */
 package org.opendaylight.netconf.sal.connect.netconf.util;
 
+import java.util.List;
 import java.util.Optional;
 import org.opendaylight.netconf.api.ModifyAction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -18,32 +20,42 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  * Transforms rpc structures to normalized nodes and vice versa.
  */
 interface RpcStructureTransformer {
-
     /**
      * Transforms data and path to the config element structure. It means creating of parent xml structure
      * specified by path and appending data to the structure. Operation is set as attribute on data element.
+     *
      * @param data data
      * @param dataPath path, where data will be written
      * @param operation operation
      * @return config structure
      */
-    DOMSourceAnyxmlNode createEditConfigStructure(Optional<NormalizedNode<?, ?>> data,
-                                                  YangInstanceIdentifier dataPath, Optional<ModifyAction> operation);
+    DOMSourceAnyxmlNode createEditConfigStructure(Optional<NormalizedNode> data, YangInstanceIdentifier dataPath,
+                                                  Optional<ModifyAction> operation);
 
     /**
      * Transforms path to filter structure.
+     *
      * @param path path
      * @return filter structure
      */
-    DataContainerChild<?,?> toFilterStructure(YangInstanceIdentifier path);
+    AnyxmlNode<?> toFilterStructure(YangInstanceIdentifier path);
+
+    /**
+     * Transforms list of fields filters to filter structure.
+     * Field paths are relative to parent query path.
+     *
+     * @param fieldsFilters list of: parent path and selection fields
+     * @return filter structure
+     */
+    AnyxmlNode<?> toFilterStructure(List<FieldsFilter> fieldsFilters);
 
     /**
      * Selects data specified by path from data node. Data must be product of get-config rpc with filter created by
-     * {@link #toFilterStructure(YangInstanceIdentifier)} with same path.
+     * {@link #toFilterStructure(YangInstanceIdentifier)} or {@link #toFilterStructure(List)} )} with same path.
+     *
      * @param data data
      * @param path path to select
      * @return selected data
      */
-    Optional<NormalizedNode<?, ?>> selectFromDataStructure(
-            DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> data, YangInstanceIdentifier path);
+    Optional<NormalizedNode> selectFromDataStructure(DataContainerChild data, YangInstanceIdentifier path);
 }