import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
import org.opendaylight.yangtools.yang.data.impl.schema.ResultAlreadySetException;
+import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
iiToDataList.add(new YangInstanceIdentifier.NodeIdentifier(result.getNodeType()));
iiToDataList.add(result.getIdentifier());
} else {
- iiToDataList.add(result.getIdentifier());
+ if (!(parentSchema instanceof OperationDefinition)) {
+ iiToDataList.add(result.getIdentifier());
+ }
}
} else {
if (result instanceof MapNode) {
public Response postData(final NormalizedNodeContext payload, final UriInfo uriInfo) {
requireNonNull(payload);
if (payload.getInstanceIdentifierContext().getSchemaNode() instanceof ActionDefinition) {
- return invokeAction(payload, uriInfo);
+ return invokeAction(payload);
}
final QueryParams checkedParms = checkQueryParameters(uriInfo);
/**
* Invoke Action operation.
*
- * @param payload
- * {@link NormalizedNodeContext} - the body of the operation
- * @param uriInfo
- * URI info
+ * @param payload {@link NormalizedNodeContext} - the body of the operation
* @return {@link NormalizedNodeContext} wrapped in {@link Response}
*/
- public Response invokeAction(final NormalizedNodeContext payload, final UriInfo uriInfo) {
+ public Response invokeAction(final NormalizedNodeContext payload) {
final InstanceIdentifierContext<?> context = payload.getInstanceIdentifierContext();
final DOMMountPoint mountPoint = context.getMountPoint();
final SchemaPath schemaPath = context.getSchemaNode().getPath();
package org.opendaylight.restconf.nb.rfc8040.rests.utils;
import com.google.common.util.concurrent.ListenableFuture;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Optional;
import java.util.concurrent.CancellationException;
import javax.ws.rs.core.Response.Status;
import org.opendaylight.restconf.nb.rfc8040.handlers.ActionServiceHandler;
import org.opendaylight.restconf.nb.rfc8040.handlers.RpcServiceHandler;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
if (!mountPointService.isPresent()) {
throw new RestconfDocumentedException("DomAction service is missing.");
}
-
- return prepareActionResult(mountPointService.get().invokeAction(schemaPath,
- prepareDataTreeId(yangIId, schemaPath), data));
+ return prepareActionResult(mountPointService.get().invokeAction(schemaPath, prepareDataTreeId(yangIId), data));
}
/**
*/
public static DOMActionResult invokeAction(final ContainerNode data, final SchemaPath schemaPath,
final ActionServiceHandler actionServiceHandler, final YangInstanceIdentifier yangIId) {
- return prepareActionResult(actionServiceHandler.get().invokeAction(schemaPath,
- prepareDataTreeId(yangIId, schemaPath), data));
+ return prepareActionResult(
+ actionServiceHandler.get().invokeAction(schemaPath, prepareDataTreeId(yangIId), data));
}
/**
/**
* Prepare DOMDataTree Identifier.
*
- * @param yangIId
- * {@link YangInstanceIdentifier}
- * @param schemaPath
- * {@link SchemaPath}
+ * @param yangIId {@link YangInstanceIdentifier}
* @return {@link DOMDataTreeIdentifier} domDataTreeIdentifier
*/
- private static DOMDataTreeIdentifier prepareDataTreeId(final YangInstanceIdentifier yangIId,
- final SchemaPath schemaPath) {
- final List<PathArgument> pathArg = new ArrayList<>();
- for (PathArgument path : yangIId.getPathArguments()) {
- if (path.getNodeType().getLocalName().equals(schemaPath.getLastComponent().getLocalName())) {
- break;
- }
- pathArg.add(path);
- }
- YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.builder().append(pathArg).build();
- DOMDataTreeIdentifier domDataTreeIdentifier = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL,
- yangInstanceIdentifier);
- return domDataTreeIdentifier;
+ private static DOMDataTreeIdentifier prepareDataTreeId(final YangInstanceIdentifier yangIId) {
+ return new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, yangIId.getParent());
}
}