protected PathHandler mountMethods(PathHandler pathHandler, final Class<?> handlerClass) { Controller controllerAnnotation = handlerClass.getAnnotation(Controller.class); Method[] methods = handlerClass.getMethods(); final List<Method> beforeTranslationMethods = identifyBeforeTranslationMethod(methods); for (final Method method : methods) { Page methodPagePath = method.getAnnotation(Page.class); if (methodPagePath != null) { HttpHandler h = new HandlerCreator() .forPageClass(handlerClass) .withPathMethod(method) .withExecuteBeforeMethods(beforeTranslationMethods) .mount(); String pageRoot = controllerAnnotation.path(); for (String methodRoot : methodPagePath.value()) { pathHandler.addExactPath(pageRoot + "/" + methodRoot, h); } } } return pathHandler; }
private static void setupOpenListener( HttpOpenListener listener, ModelController modelController, ConsoleMode consoleMode, String consoleSlot, ControlledProcessStateService controlledProcessStateService, int securePort, SecurityRealm securityRealm, final ChannelUpgradeHandler upgradeHandler) { CanonicalPathHandler canonicalPathHandler = new CanonicalPathHandler(); listener.setRootHandler(canonicalPathHandler); PathHandler pathHandler = new PathHandler(); HttpHandler current = pathHandler; if (upgradeHandler != null) { upgradeHandler.setNonUpgradeHandler(current); current = upgradeHandler; } if (securePort > 0) { current = new SinglePortConfidentialityHandler(current, securePort); } // caching handler, used for static resources current = new CacheHandler( new DirectBufferCache( 1024, 1024 * 10, 1024 * 1000, BufferAllocator.BYTE_BUFFER_ALLOCATOR), current); current = new SimpleErrorPageHandler(current); canonicalPathHandler.setNext(current); ResourceHandlerDefinition consoleHandler = null; try { consoleHandler = consoleMode.createConsoleHandler(consoleSlot); } catch (ModuleLoadException e) { ROOT_LOGGER.consoleModuleNotFound(consoleSlot == null ? "main" : consoleSlot); } try { pathHandler.addPrefixPath( ErrorContextHandler.ERROR_CONTEXT, ErrorContextHandler.createErrorContext(consoleSlot)); } catch (ModuleLoadException e) { ROOT_LOGGER.errorContextModuleNotFound(consoleSlot == null ? "main" : consoleSlot); } ManagementRootConsoleRedirectHandler rootConsoleRedirectHandler = new ManagementRootConsoleRedirectHandler(consoleHandler); DomainApiCheckHandler domainApiHandler = new DomainApiCheckHandler(modelController, controlledProcessStateService); pathHandler.addPrefixPath("/", rootConsoleRedirectHandler); if (consoleHandler != null) { HttpHandler readinessHandler = new RedirectReadinessHandler( securityRealm, consoleHandler.getHandler(), ErrorContextHandler.ERROR_CONTEXT); pathHandler.addPrefixPath(consoleHandler.getContext(), readinessHandler); } HttpHandler readinessHandler = new DmrFailureReadinessHandler( securityRealm, secureDomainAccess(domainApiHandler, securityRealm), ErrorContextHandler.ERROR_CONTEXT); pathHandler.addPrefixPath(DomainApiCheckHandler.PATH, readinessHandler); pathHandler.addExactPath("management-upload", readinessHandler); if (securityRealm != null) { pathHandler.addPrefixPath(LogoutHandler.PATH, new LogoutHandler(securityRealm.getName())); } }