Merge "Update comments around flat-batch service"
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / services / RequestContextUtil.java
index ee752c9564bd6866b0e693ab40572dd9335259ec..25c6ec555fb16d2a866874b087281c40d24b12bd 100644 (file)
@@ -7,8 +7,11 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-
+import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 
 public final class RequestContextUtil {
@@ -20,11 +23,18 @@ public final class RequestContextUtil {
     }
 
 
-    static void closeRequstContext(final RequestContext<?> requestContext) {
+    public static <T> ListenableFuture<RpcResult<T>> closeRequestContextWithRpcError(final RequestContext<T> requestContext, final String errorMessage) {
+        RpcResultBuilder<T> rpcResultBuilder = RpcResultBuilder.<T>failed().withRpcError(RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, "", errorMessage));
+        requestContext.setResult(rpcResultBuilder.build());
+        closeRequestContext(requestContext);
+        return requestContext.getFuture();
+    }
+
+    public static void closeRequestContext(final RequestContext<?> requestContext) {
         try {
             requestContext.close();
         } catch (Exception e) {
-            LOG.debug("Request context wasn't closed. Exception message: {}",e.getMessage());
+            LOG.error("Request context failed to close", e);
         }
     }
 }