private static void completeBatchExtensions( ComponentContainer container, List<Object> extensions, Class type) { if (container != null) { extensions.addAll(container.getComponentsByType(type)); completeBatchExtensions(container.getParent(), extensions, type); } }
private void evaluateMethod(Object extension, Method method, List<Object> results) { try { Object result = method.invoke(extension); if (result != null) { if (result instanceof Class<?>) { results.addAll(componentContainer.getComponentsByType((Class<?>) result)); } else if (result instanceof Collection<?>) { results.addAll((Collection<?>) result); } else if (result.getClass().isArray()) { for (int i = 0; i < Array.getLength(result); i++) { results.add(Array.get(result, i)); } } else { results.add(result); } } } catch (Exception e) { throw new IllegalStateException("Can not invoke method " + method, e); } }
private static void configureFromModules(ComponentContainer container) { List<Module> modules = container.getComponentsByType(Module.class); for (Module module : modules) { module.configure(container); } }