コード例 #1
0
    private void handleEnrollInTransaction(Operation request) {
      String serviceSelfLink = this.service.getSelfLink();
      if (Action.POST == request.getAction()) {
        ServiceDocument body = request.getBody(this.service.getStateType());
        if (body.documentSelfLink == null) {
          body.documentSelfLink = UUID.randomUUID().toString();
          request.setBody(body);
        }
        serviceSelfLink = UriUtils.buildUriPath(serviceSelfLink, body.documentSelfLink);
      }

      long servicePreviousVersion =
          this.service.getState(request) == null
              ? -1
              : this.service.getState(request).documentVersion;
      Operation enrollRequest =
          SimpleTransactionService.TxUtils.buildEnrollRequest(
                  this.service.getHost(),
                  request.getTransactionId(),
                  serviceSelfLink,
                  request.getAction(),
                  servicePreviousVersion)
              .setCompletion(
                  (o, e) -> {
                    if (e != null) {
                      request.fail(e);
                      return;
                    }
                    this.service
                        .getOperationProcessingChain()
                        .resumeProcessingRequest(request, this);
                  });
      this.service.sendRequest(enrollRequest);
    }