@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")); }
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(); } }
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)")); }
@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) { } }
@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)); }
@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)); }
@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); }