private DeferredResult<Void> subscribeForSubscriptions() { DeferredResult<Void> subscriptionsRead = new DeferredResult<Void>(); CommonContinuousQueries .subscribeTo(this.getHost(), ContinuousQueryId.EXTENSIBILITY_SUBSCRIPTIONS, op -> onSubscriptionChange(op, subscriptionsRead)); return subscriptionsRead; }
private DeferredResult<Void> subscribeForTopics() { DeferredResult<Void> topicsRead = new DeferredResult<Void>(); CommonContinuousQueries.subscribeTo(this.getHost(), ContinuousQueryId.EVENT_TOPICS, op -> onEventTopicChange(op, topicsRead)); return topicsRead; }
@SuppressWarnings("rawtypes") private <T extends TaskServiceDocument> ServiceDocument buildDataToSend( ServiceTaskCallbackResponse notificationPayload, ServiceTaskCallbackResponse replyPayload, ExtensibilitySubscriptionCallback result) { // Notification payload will give information about the task to subscriber. ServiceTaskCallbackResponse notificationPayloadData = Utils.fromJson( result.taskStateJson, notificationPayload.getClass()); //Copy enhanced payload (if some enhancements to payload have been made) PropertyUtils.mergeObjects(notificationPayload, notificationPayloadData, PropertyUtils.SHALLOW_MERGE_STRATEGY); notificationPayload.customProperties = notificationPayload .customProperties != null ? filterSystemProperties(notificationPayload .customProperties) : null; // Get service reply payload in order to notify subscriber which fields are acceptable for // response. ServiceTaskCallbackResponse replyPayloadData = Utils.fromJson( result.taskStateJson, replyPayload.getClass()); ExtensibilitySubscriptionCallback data = new ExtensibilitySubscriptionCallback(); data.serviceCallback = UriUtils.buildUri(getHost(), result.documentSelfLink); data.notificationPayload = Utils.toJson(notificationPayload); data.replyPayload = replyPayloadData; data.taskStateClassName = result.taskStateClassName; data.tenantLinks = result.tenantLinks; return data; }
extensibility.callbackReference, body.documentSelfLink); } else { getHost().schedule(() -> { sendExternalNotification(extensibility, body, state, retriesLeft - 1);
private DeferredResult<Void> loadTopics() { DeferredResult<Void> res = new DeferredResult<>(); QueryTask q = QueryUtil.buildQuery(EventTopicState.class, false); QueryUtil.addExpandOption(q); new ServiceDocumentQuery<>(getHost(), EventTopicState.class) .query(q, (r) -> { if (r.hasException()) { logSevere("Exception while initializing LifecycleExtensibilityManager. " + "Error: [%s]", r.getException().getMessage()); res.fail(r.getException()); } else if (r.hasResult()) { EventTopicState state = r.getResult(); handleUpdateEventTopicState(state); } else { logInfo("Loaded %d extensibility states", subscriptions.size()); res.complete(null); } }); return res; }
private DeferredResult<Void> loadSubscriptions() { DeferredResult<Void> res = new DeferredResult<>(); QueryTask q = QueryUtil.buildQuery(ExtensibilitySubscription.class, false); QueryUtil.addExpandOption(q); new ServiceDocumentQuery<>(getHost(), ExtensibilitySubscription.class) .query(q, (r) -> { if (r.hasException()) { logSevere("Exception while initializing LifecycleExtensibilityManager. " + "Error: [%s]", r.getException().getMessage()); res.fail(r.getException()); } else if (r.hasResult()) { ExtensibilitySubscription state = r.getResult(); addExtensibilitySubscription(state); } else { logInfo("Loaded %d extensibility states", subscriptions.size()); res.complete(null); } }); return res; }
private void failTask(String msg, String taskDocumentSelfLink) { String errMsg = msg != null ? msg : "Unexpected State"; logWarning("Fail extensibility task: %s", errMsg); ServiceTaskCallbackResponse body = new ServiceTaskCallbackResponse(); body.taskInfo = new TaskState(); body.taskInfo.stage = TaskStage.FAILED; body.taskSubStage = DefaultSubStage.ERROR; ServiceErrorResponse rsp = new ServiceErrorResponse(); rsp.message = errMsg; body.taskInfo.failure = rsp; sendRequest(Operation.createPatch(UriUtils.buildUri(getHost(), taskDocumentSelfLink)) .setBody(body) .setCompletion((op, ex) -> { if (ex != null) { logWarning("Patch for fail task operation failed: %s", Utils.toString(ex)); } })); }