X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fimplementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnector%2Fremoterpc%2FClientImpl.java;h=84df2e43f01cd54084357d58b67abbe0ea6e93e9;hp=30e11c0806731c24ab151dd7cf585408916fd233;hb=8ec80cfe8201adca88813d83a007417133da162e;hpb=1f2754487ab1e3a37c830909806f90cd54180c7b diff --git a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/ClientImpl.java b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/ClientImpl.java index 30e11c0806..84df2e43f0 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/ClientImpl.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/ClientImpl.java @@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory; import org.zeromq.ZMQ; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -140,9 +141,29 @@ public class ClientImpl implements RemoteRpcClient { Message response = handler.handle(request); CompositeNode payload = null; - if ( response != null ) - payload = XmlUtils.xmlToCompositeNode((String) response.getPayload()); + if ( response != null ) { + _logger.info("Received response [{}]", response); + + Object rawPayload = response.getPayload(); + switch (response.getType()) { + case ERROR: + if ( rawPayload instanceof List ) + errors = (List) rawPayload; + break; + + case RESPONSE: + payload = XmlUtils.xmlToCompositeNode((String) rawPayload); + break; + + default: + errors.add( + RpcErrors.getRpcError(null, null,null,null,"Unable to get response from remote controller", null, null) + ); + break; + + } + } return Rpcs.getRpcResult(true, payload, errors); } catch (Exception e){