+ @Override
+ public Future<RpcResult<CheckPublishNotificationsOutput>> checkPublishNotifications(
+ final CheckPublishNotificationsInput input) {
+
+ final PublishNotificationsTask task = publishNotificationsTasks.get(input.getId());
+
+ if (task == null) {
+ return Futures.immediateFuture(RpcResultBuilder.success(
+ new CheckPublishNotificationsOutputBuilder().setActive(false)).build());
+ }
+
+ final CheckPublishNotificationsOutputBuilder checkPublishNotificationsOutputBuilder =
+ new CheckPublishNotificationsOutputBuilder().setActive(!task.isFinished());
+
+ if (task.getLastError() != null) {
+ final StringWriter sw = new StringWriter();
+ final PrintWriter pw = new PrintWriter(sw);
+ task.getLastError().printStackTrace(pw);
+ checkPublishNotificationsOutputBuilder.setLastError(task.getLastError().toString() + sw.toString());
+ }
+
+ final CheckPublishNotificationsOutput output =
+ checkPublishNotificationsOutputBuilder.setPublishCount(task.getCurrentNotif()).build();
+
+ return Futures.immediateFuture(RpcResultBuilder.success(output).build());
+ }
+