import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
import javax.ws.rs.Encoded;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
NormalizedNodeContext invokeRpc(@Encoded @PathParam("identifier") String identifier, NormalizedNodeContext payload,
@Context UriInfo uriInfo);
- /**
- * Invoke RPC with default empty payload.
- *
- * @param identifier module name and rpc identifier string for the desired operation
- * @param noPayload the body of the operation
- * @param uriInfo URI info
- * @return {@link NormalizedNodeContext}
- * @deprecated Method is not used and will be removed
- */
- @POST
- @Path("/operations/{identifier:.+}")
- @Produces({ Draft02.MediaTypes.OPERATION + JSON, Draft02.MediaTypes.OPERATION + XML,
- Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
- MediaType.APPLICATION_XML, MediaType.TEXT_XML })
- @Deprecated // method isn't use anywhere
- NormalizedNodeContext invokeRpc(@Encoded @PathParam("identifier") String identifier,
- @DefaultValue("") String noPayload, @Context UriInfo uriInfo);
-
/**
* Get target data resource from config data store.
*
return this.restconf.invokeRpc(identifier, payload, uriInfo);
}
- @Override
- @Deprecated
- public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
- return this.restconf.invokeRpc(identifier, noPayload, uriInfo);
- }
-
@Override
public NormalizedNodeContext readConfigurationData(final String identifier, final UriInfo uriInfo) {
return this.restconf.readConfigurationData(identifier, uriInfo);
outputContext = restconfService.invokeRpc(uriPath, inputContext, null);
} else {
- outputContext = restconfService.invokeRpc(uriPath, "", null);
+ outputContext = restconfService.invokeRpc(uriPath, null, null);
}
if (outputContext.getData() != null) {
package org.opendaylight.netconf.sal.restconf.impl;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.CharMatcher;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicates;
import com.google.common.base.Splitter;
final UriInfo uriInfo) {
if (payload == null) {
// no payload specified, reroute this to no payload invokeRpc implementation
- return invokeRpc(identifier, "", uriInfo);
+ return invokeRpc(identifier, uriInfo);
}
final SchemaPath type = payload.getInstanceIdentifierContext().getSchemaNode().getPath();
resultData, QueryParametersParser.parseWriterParameters(uriInfo));
}
- @Override
- public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
- if (noPayload != null && !CharMatcher.whitespace().matchesAllOf(noPayload)) {
- throw new RestconfDocumentedException("Content must be empty.", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
- }
+ private NormalizedNodeContext invokeRpc(final String identifier, final UriInfo uriInfo) {
- String identifierEncoded = null;
DOMMountPoint mountPoint = null;
+ final String identifierEncoded;
final SchemaContext schemaContext;
if (identifier.contains(ControllerContext.MOUNT)) {
// mounted RPC call - look up mount instance.
final String identifierDecoded = this.controllerContext.urlPathArgDecode(identifierEncoded);
- RpcDefinition rpc = null;
+ RpcDefinition rpc;
if (mountPoint == null) {
rpc = this.controllerContext.getRpcDefinition(identifierDecoded);
} else {
return this.delegate.invokeRpc(identifier, payload, uriInfo);
}
- @Override
- public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
- this.rpc.incrementAndGet();
- return this.delegate.invokeRpc(identifier, noPayload, uriInfo);
- }
-
@SuppressWarnings("checkstyle:IllegalCatch")
@Override
public NormalizedNodeContext readConfigurationData(final String identifier, final UriInfo uriInfo) {
.when(brokerFacade).invokeRpc(eq(type), isNull());
try {
- this.restconfImpl.invokeRpc("toaster:cancel-toast", "", uriInfo);
+ this.restconfImpl.invokeRpc("toaster:cancel-toast", null, uriInfo);
fail("Expected an exception to be thrown.");
} catch (final RestconfDocumentedException e) {
verifyRestconfDocumentedException(e, 0, ErrorType.APPLICATION, ErrorTag.OPERATION_NOT_SUPPORTED,
doReturn(immediateFluentFuture(result)).when(brokerFacade).invokeRpc(eq(path), isNull());
try {
- this.restconfImpl.invokeRpc("toaster:cancel-toast", "", uriInfo);
+ this.restconfImpl.invokeRpc("toaster:cancel-toast", null, uriInfo);
fail("Expected an exception to be thrown.");
} catch (final RestconfDocumentedException e) {
verifyRestconfDocumentedException(e, 0, ErrorType.TRANSPORT, ErrorTag.OPERATION_FAILED, Optional.of("foo"),
doReturn(immediateFluentFuture(expResult)).when(brokerFacade).invokeRpc(eq(path), isNull());
- final NormalizedNodeContext output = this.restconfImpl.invokeRpc("toaster:cancel-toast", "", uriInfo);
+ final NormalizedNodeContext output = this.restconfImpl.invokeRpc("toaster:cancel-toast", null, uriInfo);
assertNotNull(output);
assertEquals(null, output.getData());
// additional validation in the fact that the restconfImpl does not
// throw an exception.
}
- @Test
- public void testInvokeRpcMethodExpectingNoPayloadButProvidePayload() {
- try {
- this.restconfImpl.invokeRpc("toaster:cancel-toast", " a payload ", uriInfo);
- fail("Expected an exception");
- } catch (final RestconfDocumentedException e) {
- verifyRestconfDocumentedException(e, 0, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
- Optional.absent(), Optional.absent());
- }
- }
-
@Test
public void testInvokeRpcMethodWithBadMethodName() {
try {
- this.restconfImpl.invokeRpc("toaster:bad-method", "", uriInfo);
+ this.restconfImpl.invokeRpc("toaster:bad-method", null, uriInfo);
fail("Expected an exception");
} catch (final RestconfDocumentedException e) {
verifyRestconfDocumentedException(e, 0, ErrorType.RPC, ErrorTag.UNKNOWN_ELEMENT,
@Test
public void testThrowExceptionWhenSlashInModuleName() {
try {
- this.restconfImpl.invokeRpc("toaster/slash", "", uriInfo);
+ this.restconfImpl.invokeRpc("toaster/slash", null, uriInfo);
fail("Expected an exception.");
} catch (final RestconfDocumentedException e) {
verifyRestconfDocumentedException(e, 0, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
doReturn(immediateFluentFuture(result)).when(brokerFacade).invokeRpc(eq(rpcDef.getPath()), isNull());
- final NormalizedNodeContext output = this.restconfImpl.invokeRpc("toaster:testOutput", "", uriInfo);
+ final NormalizedNodeContext output = this.restconfImpl.invokeRpc("toaster:testOutput", null, uriInfo);
assertNotNull(output);
assertNotNull(output.getData());
assertSame(container, output.getData());