private ConditionEvaluationResult evaluateIfAnnotated(Optional<AnnotatedElement> element) { Optional<DisabledOnOs> disabled = element.flatMap(el -> findAnnotation(el, DisabledOnOs.class)); if (disabled.isPresent()) return disabledIfOn(disabled.get().value()); Optional<TestExceptOnOs> testExcept = element.flatMap(el -> findAnnotation(el, TestExceptOnOs.class)); if (testExcept.isPresent()) return disabledIfOn(testExcept.get().value()); return ConditionEvaluationResult.enabled(""); }
/** * Creates an array of JPA predicates for networks list query. Add filter predicates for name and * principal if required. 1) if name is specified adds 'name = ?' predicate 2) if name pattern is * specified adds 'name like ?' predicate 3) if principal is user of key without ADMIN role adds * predicate for filtering not assigned networks 4) if principal is key which has permissions only * to specific networks adds 'network.id in (allowed_networks)' predicates * * @return array of above predicates * @see {@link com.devicehive.service.NetworkService#list(String, String, String, boolean, * Integer, Integer, HivePrincipal)} */ public static Predicate[] networkListPredicates( CriteriaBuilder cb, Root<Network> from, Optional<String> nameOpt, Optional<String> namePatternOpt, Optional<HivePrincipal> principalOpt) { List<Predicate> predicates = new LinkedList<>(); nameOpt.ifPresent(name -> predicates.add(cb.equal(from.get("name"), name))); namePatternOpt.ifPresent(pattern -> predicates.add(cb.like(from.get("name"), pattern))); principalOpt .flatMap( principal -> { User user = principal.getUser(); if (user == null && principal.getKey() != null) { user = principal.getKey().getUser(); } return ofNullable(user); }) .ifPresent( user -> { if (!user.isAdmin()) { predicates.add(from.join("users").in(user)); } }); principalOpt .map(HivePrincipal::getKey) .ifPresent( key -> predicates.add( cb.or(networkPermissionsPredicates(cb, from, key.getPermissions())))); return predicates.toArray(new Predicate[predicates.size()]); }
/** * Gets the country stored in session. * * @return the country stored in the session, or absent if none stored. */ private Optional<CountryCode> countryInSession() { Http.Session session = Http.Context.current().session(); Optional<String> code = Optional.ofNullable(session.get(COUNTRY_SESSION_KEY)); return code.flatMap(CountryOperations::parseCode); }