@Override public <M extends Module> Future<M> run(final M module, final List<? extends ModulePreprocessor> pre, final List<? extends ModulePostprocessor> post, final Map<String, Object> inputMap) { assignInputs(module, inputMap); final ModuleRunner runner = new ModuleRunner(getContext(), module, pre, post); @SuppressWarnings("unchecked") final Callable<M> callable = (Callable<M>) runner; final Future<M> future = threadService.run(callable); return future; }
@Override public Future<Module> run(final ModuleInfo info, final List<? extends ModulePreprocessor> pre, final List<? extends ModulePostprocessor> post, final Map<String, Object> inputMap) { final Module module = createModule(info); if (module == null) return null; return run(module, pre, post, inputMap); }
private <T> ModuleItem<T> getTypedSingleItem(final Module module, final Class<T> type, final Iterable<ModuleItem<?>> items) { Set<Class<?>> types = new HashSet<>(); types.add(type); @SuppressWarnings("unchecked") ModuleItem<T> result = (ModuleItem<T>) getSingleItem(module, types, items); return result; }
@Override public Module createModule(final ModuleInfo info) { final Module existing = getRegisteredModuleInstance(info); if (existing != null) return existing; try { final Module module = info.createModule(); getContext().inject(module); Priority.inject(module, info.getPriority()); return module; } catch (final ModuleException exc) { log.error("Cannot create module: " + info.getDelegateClassName(), exc); } return null; }
@Override public ModuleInfo getModuleById(final String id) { // TODO: Cache identifiers in a hash? for (final ModuleInfo info : getModules()) { final String infoID = info.getIdentifier(); if (id.equals(infoID)) return info; } return null; }
@Override public <T> ModuleItem<T> getSingleOutput(final Module module, final Class<T> type) { return getTypedSingleItem(module, type, module.getInfo().outputs()); }
private Class<?> prefClass(final ModuleItem<?> item) { final String persistKey = item.getPersistKey(); return persistKey == null || persistKey.isEmpty() ? // delegateClass(item) : null; }
@Override public Module createModule(final ModuleInfo info) { final Module existing = getRegisteredModuleInstance(info); if (existing != null) return existing; try { final Module module = info.createModule(); getContext().inject(module); Priority.inject(module, info.getPriority()); return module; } catch (final ModuleException exc) { log.error("Cannot create module: " + info.getDelegateClassName(), exc); } return null; }
@Override public ModuleInfo getModuleById(final String id) { // TODO: Cache identifiers in a hash? for (final ModuleInfo info : getModules()) { final String infoID = info.getIdentifier(); if (id.equals(infoID)) return info; } return null; }
@Override public <T> ModuleItem<T> getSingleInput(final Module module, final Class<T> type) { return getTypedSingleItem(module, type, module.getInfo().inputs()); }
private Class<?> prefClass(final ModuleItem<?> item) { final String persistKey = item.getPersistKey(); return persistKey == null || persistKey.isEmpty() ? // delegateClass(item) : null; }
@Override public <M extends Module> Future<M> run(final M module, final List<? extends ModulePreprocessor> pre, final List<? extends ModulePostprocessor> post, final Map<String, Object> inputMap) { assignInputs(module, inputMap); final ModuleRunner runner = new ModuleRunner(getContext(), module, pre, post); @SuppressWarnings("unchecked") final Callable<M> callable = (Callable<M>) runner; final Future<M> future = threadService.run(callable); return future; }
@Override public Future<Module> run(final ModuleInfo info, final List<? extends ModulePreprocessor> pre, final List<? extends ModulePostprocessor> post, final Map<String, Object> inputMap) { final Module module = createModule(info); if (module == null) return null; return run(module, pre, post, inputMap); }
private <T> ModuleItem<T> getTypedSingleItem(final Module module, final Class<T> type, final Iterable<ModuleItem<?>> items) { Set<Class<?>> types = new HashSet<>(); types.add(type); @SuppressWarnings("unchecked") ModuleItem<T> result = (ModuleItem<T>) getSingleItem(module, types, items); return result; }
@Override public ModuleInfo getModuleForAccelerator(final Accelerator acc) { for (final ModuleInfo info : getModules()) { final MenuPath menuPath = info.getMenuPath(); if (menuPath == null || menuPath.isEmpty()) continue; if (acc.equals(menuPath.getLeaf().getAccelerator())) return info; } return null; }
@Override public <T> ModuleItem<T> getSingleOutput(final Module module, final Class<T> type) { return getTypedSingleItem(module, type, module.getInfo().outputs()); }