Esempio n. 1
0
  public static ProjectVulnerabilityRating updateProjectVulnerabilityRatingFromRequest(
      Optional<ProjectVulnerabilityRating> projectVulnerabilityRatings, ResourceRequest request) {
    String projectId = request.getParameter(PortalConstants.PROJECT_ID);
    ProjectVulnerabilityRating projectVulnerabilityRating =
        projectVulnerabilityRatings.orElse(
            new ProjectVulnerabilityRating()
                .setProjectId(projectId)
                .setVulnerabilityIdToReleaseIdToStatus(new HashMap<>()));

    String vulnerabilityId = request.getParameter(PortalConstants.VULNERABILITY_ID);
    String releaseId = request.getParameter(PortalConstants.RELEASE_ID);
    if (!projectVulnerabilityRating.isSetVulnerabilityIdToReleaseIdToStatus()) {
      projectVulnerabilityRating.setVulnerabilityIdToReleaseIdToStatus(new HashMap<>());
    }

    Map<String, Map<String, List<VulnerabilityCheckStatus>>> vulnerabilityIdToReleaseIdToStatus =
        projectVulnerabilityRating.getVulnerabilityIdToReleaseIdToStatus();
    if (!vulnerabilityIdToReleaseIdToStatus.containsKey(vulnerabilityId)) {
      vulnerabilityIdToReleaseIdToStatus.put(vulnerabilityId, new HashMap<>());
    }
    if (!vulnerabilityIdToReleaseIdToStatus.get(vulnerabilityId).containsKey(releaseId)) {
      vulnerabilityIdToReleaseIdToStatus.get(vulnerabilityId).put(releaseId, new ArrayList<>());
    }

    List<VulnerabilityCheckStatus> vulnerabilityCheckStatusHistory =
        vulnerabilityIdToReleaseIdToStatus.get(vulnerabilityId).get(releaseId);
    VulnerabilityCheckStatus vulnerabilityCheckStatus =
        newVulnerabilityCheckStatusFromRequest(request);
    vulnerabilityCheckStatusHistory.add(vulnerabilityCheckStatus);

    return projectVulnerabilityRating;
  }
Esempio n. 2
0
  static void optionalTest() {
    // 不要这样,这与!=null没什么区别
    Optional<String> stringOptional = Optional.of("alibaba");
    if (stringOptional.isPresent()) {
      System.out.println(stringOptional.get().length());
    }
    Optional<String> optionalValue = Optional.of("alibaba");
    // 下面是推荐的常用操作
    optionalValue.ifPresent(s -> System.out.println(s + " contains red"));
    // 增加到集合汇总
    List<String> results = Lists.newArrayList();
    optionalValue.ifPresent(results::add);
    // 增加到集合中,并返回操作结果
    Optional<Boolean> added = optionalValue.map(results::add);

    // 无值的optional
    Optional<String> optionalString = Optional.empty();
    // 不存在值,返回“No word”
    String result = optionalValue.orElse("No word");
    // 没值,计算一个默认值
    result = optionalString.orElseGet(() -> System.getProperty("user.dir"));
    // 无值,抛一个异常
    try {
      result = optionalString.orElseThrow(NoSuchElementException::new);
    } catch (Throwable t) {
      t.getCause();
    }
  }
Esempio n. 3
0
  @Test
  public void _07_옵션_다루기() {
    final Optional<String> optional = words.stream().filter(w -> w.contains("red")).findFirst();
    try {
      optional.ifPresent(
          v -> {
            throw new RuntimeException();
          });
      assert false; // 이 행은 실행되면 안됨.
    } catch (RuntimeException e) {

    }

    // 비어있는 경우는 실행되지 않음.
    Optional.empty()
        .ifPresent(
            v -> {
              throw new RuntimeException();
            });

    Set<String> results = new HashSet<>();
    optional.ifPresent(results::add);
    assertThat(results.contains("tired"), is(true));

    // 실행 결과를 받고 싶은 경우에는 map 사용.
    results = new HashSet<>();
    Optional<Boolean> added = optional.map(results::add);
    assertThat(added, is(Optional.of(Boolean.TRUE)));

    // 대상이 빈경우에는 empty Optional 반환
    Optional<Boolean> a = Optional.empty().map(v -> true);
    assertThat(a.isPresent(), is(false));

    Optional<String> emptyOptional = Optional.empty();

    // orElse로 기본값 지정 가능
    String result = emptyOptional.orElse("기본값");
    assertThat(result, is("기본값"));

    // 기본값 생성하는 코드 호출 가능
    result = emptyOptional.orElseGet(() -> System.getProperty("user.dir"));
    assertThat(result, is(System.getProperty("user.dir")));

    // 값이 없는 경우 예외 던지기
    try {
      emptyOptional.orElseThrow(NoSuchElementException::new);
      assert false;
    } catch (NoSuchElementException e) {

    }
  }
Esempio n. 4
0
 public static Container setup(
     DataSource dataSource,
     Properties properties,
     Optional<ClassLoader> classLoader,
     Iterator<SystemAspect> aspects)
     throws IOException {
   ClassLoader loader = classLoader.orElse(Thread.currentThread().getContextClassLoader());
   SimpleContainer container =
       new SimpleContainer("true".equals(properties.getProperty("revenj.resolveUnknown")));
   container.registerInstance(properties);
   container.registerInstance(ServiceLocator.class, container, false);
   container.registerInstance(DataSource.class, dataSource, false);
   container.registerInstance(ClassLoader.class, loader, false);
   String ns = properties.getProperty("revenj.namespace");
   SimpleDomainModel domainModel = new SimpleDomainModel(ns, loader);
   container.registerInstance(DomainModel.class, domainModel, false);
   container.registerFactory(DataContext.class, LocatorDataContext::asDataContext, false);
   container.registerFactory(UnitOfWork.class, LocatorDataContext::asUnitOfWork, false);
   PluginLoader plugins = new ServicesPluginLoader(loader);
   container.registerInstance(PluginLoader.class, plugins, false);
   PostgresDatabaseNotification databaseNotification =
       new PostgresDatabaseNotification(
           dataSource, Optional.of(domainModel), properties, container);
   container.registerInstance(EagerNotification.class, databaseNotification, false);
   container.registerInstance(DataChangeNotification.class, databaseNotification, true);
   ChangeNotification.registerContainer(container, databaseNotification);
   container.registerFactory(RepositoryBulkReader.class, PostgresBulkReader::create, false);
   container.registerInstance(
       PermissionManager.class, new RevenjPermissionManager(container), false);
   container.registerClass(
       new Generic<Serialization<String>>() {}.type, DslJsonSerialization.class, false);
   int total = 0;
   if (aspects != null) {
     JinqMetaModel.configure(container);
     while (aspects.hasNext()) {
       aspects.next().configure(container);
       total++;
     }
   }
   String nsAfter = properties.getProperty("revenj.namespace");
   if (!Objects.equals(ns, nsAfter)) {
     domainModel.updateNamespace(nsAfter);
   }
   properties.setProperty("revenj.aspectsCount", Integer.toString(total));
   return container;
 }
  /**
   * @param payObjects покупки, суммарную стоимость которых нужно посчитать
   * @return суммарное колличество стоимости покупок
   */
  public Integer getSumPrice(List<PayObject> payObjects) {
    Optional<Integer> optional =
        payObjects.stream().map(PayObject::getPrice).reduce((s1, s2) -> s1 + s2);

    return optional.orElse(0);
  }
  /**
   * @param payObjects покупки, текст о которых нужно составить
   * @return сгрупированный текст о всех переданных покупок
   */
  public String getTextPayObjects(List<PayObject> payObjects) {
    Optional<String> optional =
        payObjects.stream().map(PayObject::toString).reduce((s1, s2) -> s1 + "\n\n" + s2);

    return optional.orElse("");
  }
Esempio n. 7
0
 @Override
 public VulnerabilityUpdateStatus updateForRelease(String releaseId) {
   Optional<Release> release = vulnerabilityConnector.getRelease(releaseId);
   Optional<VulnerabilityUpdateStatus> updateStatus = release.map(this::updateForRelease);
   return updateStatus.orElse(getEmptyVulnerabilityUpdateStatus(RequestStatus.FAILURE));
 }