(Class<T> c, Module module, String... classes)
| 13 | private static final Map<Class<?>, Map<String, ?>> values = new LinkedHashMap<>(); |
| 14 | |
| 15 | @SuppressWarnings({"unchecked", "rawtypes"}) |
| 16 | @SneakyThrows |
| 17 | public static <T> Map<String, T> get(Class<T> c, Module module, String... classes) { |
| 18 | if (!values.containsKey(c)) { |
| 19 | List<Class<?>> loadedClasses = Arrays.stream(classes) |
| 20 | .map(s -> { |
| 21 | return Optional.<Class<?>>of(Class.forName(module, s)); |
| 22 | }) |
| 23 | .flatMap(Optional::stream) |
| 24 | .toList(); |
| 25 | loadedClasses.forEach(o -> { |
| 26 | try { |
| 27 | var instance = (TestModule<?>) o.getConstructor().newInstance(); |
| 28 | Map list = values.computeIfAbsent(instance.getValueClass(), aClass -> new LinkedHashMap()); |
| 29 | instance.init(list); |
| 30 | } catch (Exception e) { |
| 31 | throw new RuntimeException(e); |
| 32 | } |
| 33 | }); |
| 34 | } |
| 35 | |
| 36 | Map<String, Object> map = new HashMap<>(); |
| 37 | for (Map.Entry<String, ?> o : values.get(c).entrySet()) { |
| 38 | if (map.put(o.getKey(), ((FailableSupplier<?>) o.getValue()).get()) != null) { |
| 39 | throw new IllegalStateException("Duplicate key"); |
| 40 | } |
| 41 | } |
| 42 | return (Map<String, T>) map; |
| 43 | } |
| 44 | |
| 45 | public static <T> Stream<Named<T>> getArguments(Class<T> c, Module module, String... classes) { |
| 46 | Stream.Builder<Named<T>> argumentBuilder = Stream.builder(); |
no test coverage detected