/** * Finds the existing module for a module object. * * @param rootModule * the root module to start the search from. * @param moduleObject * the module object. * @param context * the action context. * @return the stack of modules containing the found module. */ @SuppressWarnings("UnusedParameters") public Stack<Module> findCurrentModule(Module rootModule, Object moduleObject, Map<String, Object> context) { Stack<Module> stack = new Stack<>(); findCurrentModule(rootModule, moduleObject, stack); return stack; }
private Module findCurrentModule(Module rootModule, Object nextSelectedModuleObject, Stack<Module> stack) { stack.push(rootModule); if (rootModule instanceof BeanModule && nextSelectedModuleObject.equals(((BeanModule) rootModule) .getModuleObject())) { return rootModule; } if (rootModule.getSubModules() != null) { for (Module sub : rootModule.getSubModules()) { Module parentModule = findCurrentModule(sub, nextSelectedModuleObject, stack); if (parentModule != null) { return parentModule; } } } stack.pop(); return null; }