public Response apply()

in java/com/google/gerrit/plugins/checks/api/CreateChecker.java [82:140]


  public Response<CheckerInfo> apply(TopLevelResource parentResource, CheckerInput input)
      throws RestApiException, PermissionBackendException, IOException, ConfigInvalidException,
          StorageException {
    if (!self.get().isIdentifiedUser()) {
      throw new AuthException("Authentication required");
    }
    permissionBackend.currentUser().check(permission);

    if (input == null) {
      input = new CheckerInput();
    }

    if (Strings.isNullOrEmpty(input.uuid)) {
      throw new BadRequestException("uuid is required");
    }
    String uuidStr = input.uuid;
    CheckerUuid checkerUuid =
        CheckerUuid.tryParse(input.uuid)
            .orElseThrow(() -> new BadRequestException("invalid uuid: " + uuidStr));

    String name = CheckerName.clean(input.name);
    if (name.isEmpty()) {
      throw new BadRequestException("name is required");
    }

    Project.NameKey repository = resolveRepository(input.repository);

    CheckerCreation.Builder checkerCreationBuilder =
        CheckerCreation.builder()
            .setCheckerUuid(checkerUuid)
            .setName(name)
            .setRepository(repository);
    CheckerUpdate.Builder checkerUpdateBuilder = CheckerUpdate.builder();

    if (input.description != null && !input.description.trim().isEmpty()) {
      checkerUpdateBuilder.setDescription(input.description.trim());
    }
    if (input.url != null) {
      checkerUpdateBuilder.setUrl(UrlValidator.clean(input.url));
    }
    if (input.status != null) {
      checkerUpdateBuilder.setStatus(input.status);
    }
    if (input.blocking != null) {
      checkerUpdateBuilder.setBlockingConditions(ImmutableSortedSet.copyOf(input.blocking));
    }
    if (input.query != null) {
      checkerUpdateBuilder.setQuery(validateQuery(checkerUuid, repository, input.query));
    }
    try {
      Checker checker =
          checkersUpdate
              .get()
              .createChecker(checkerCreationBuilder.build(), checkerUpdateBuilder.build());
      return Response.created(checkerJson.format(checker));
    } catch (DuplicateKeyException e) {
      throw new ResourceConflictException(e.getMessage());
    }
  }