@Override
 @Transactional
 public UserDetails loadUserByUsername(final String login) {
   log.debug("Authenticating {}", login);
   String lowercaseLogin = login.toLowerCase();
   Optional<User> userFromDatabase = userRepository.findOneByLogin(lowercaseLogin);
   return userFromDatabase
       .map(
           user -> {
             if (!user.getActivated()) {
               throw new UserNotActivatedException(
                   "User " + lowercaseLogin + " was not activated");
             }
             List<GrantedAuthority> grantedAuthorities =
                 user.getAuthorities()
                     .stream()
                     .map(authority -> new SimpleGrantedAuthority(authority.getName()))
                     .collect(Collectors.toList());
             return new org.springframework.security.core.userdetails.User(
                 lowercaseLogin, user.getPassword(), grantedAuthorities);
           })
       .orElseThrow(
           () ->
               new UsernameNotFoundException(
                   "User " + lowercaseLogin + " was not found in the " + "database"));
 }
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
 public Vec2 convertCoordinateSystem(Vec2 event) {
   Optional<Drawing> drawing = this.find(Drawing.drawing, both()).findFirst();
   return drawing
       .map(x -> x.windowSystemToDrawingSystem(event))
       .orElseThrow(
           () ->
               new IllegalArgumentException(
                   " cant mouse around something without drawing support (to provide coordinate system)"));
 }
Esempio n. 4
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. 5
0
  @Override
  public VulnerabilityUpdateStatus updateForComponent(String componentId) throws TException {
    Optional<Component> component = vulnerabilityConnector.getComponent(componentId);

    return component
        .map(
            c ->
                c.isSetReleaseIds()
                    ? c.getReleaseIds()
                        .stream()
                        .map(this::updateForRelease)
                        .reduce(
                            getEmptyVulnerabilityUpdateStatus(),
                            (r1, r2) -> reduceVulnerabilityUpdateStatus(r1, r2))
                    : getEmptyVulnerabilityUpdateStatus())
        .orElse(getEmptyVulnerabilityUpdateStatus(RequestStatus.FAILURE));
  }
Esempio n. 6
0
  @Override
  public VulnerabilityUpdateStatus updateForProject(String projectId) throws TException {
    Optional<Project> project = vulnerabilityConnector.getProject(projectId);

    return project
        .map(
            r ->
                r.isSetReleaseIdToUsage()
                    ? r.getReleaseIdToUsage()
                        .keySet()
                        .stream()
                        .map(this::updateForRelease)
                        .reduce(
                            getEmptyVulnerabilityUpdateStatus(),
                            (r1, r2) -> reduceVulnerabilityUpdateStatus(r1, r2))
                    : getEmptyVulnerabilityUpdateStatus())
        .orElse(getEmptyVulnerabilityUpdateStatus(RequestStatus.FAILURE));
  }
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));
 }
  protected Optional<List<String>> extractInfo() {
    Optional<Elements> elements =
        elementsWithClass("player-info").findFirst().map(e -> e.getElementsByTag("p"));

    return elements.map(this::childrenText);
  }