modules/core/src/main/java/org/rapidpm/microservice/MainUndertow.java
private static DeploymentInfo createServletDeploymentInfos() {

    final Set<Class<?>> typesAnnotatedWith = DI.getTypesAnnotatedWith(WebServlet.class , true);

    final List<ServletInfo> servletInfos = typesAnnotatedWith
        .stream()
        .filter(s -> new ReflectionUtils().checkInterface(s , HttpServlet.class))
        .map(c -> {
          Class<HttpServlet> servletClass = (Class<HttpServlet>) c;
          final ServletInfo servletInfo = servlet(c.getSimpleName() , servletClass , new ServletInstanceFactory<>(servletClass));
          if (c.isAnnotationPresent(WebInitParam.class)) {
            final WebInitParam[] annotationsByType = c.getAnnotationsByType(WebInitParam.class);
            for (WebInitParam webInitParam : annotationsByType) {
              final String value = webInitParam.value();
              final String name = webInitParam.name();
              servletInfo.addInitParam(name , value);
            }
          }
          final WebServlet annotation = c.getAnnotation(WebServlet.class);
          final String[] urlPatterns = annotation.urlPatterns();
          for (String urlPattern : urlPatterns) {
            servletInfo.addMapping(urlPattern);
          }
          servletInfo.setAsyncSupported(annotation.asyncSupported());
          return servletInfo;
        })
        .filter(servletInfo -> ! servletInfo.getMappings().isEmpty())
        .collect(Collectors.toList());

    final Set<Class<?>> weblisteners = DI.getTypesAnnotatedWith(WebListener.class);
    final List<ListenerInfo> listenerInfos = weblisteners.stream()
                                                         .map(c -> new ListenerInfo((Class<? extends EventListener>) c))
                                                         .collect(Collectors.toList());


    final DeploymentInfo deploymentInfo = deployment()
        .setClassLoader(Main.class.getClassLoader())
        .setContextPath(MYAPP)
        .setDeploymentName("ROOT" + ".war")
        .setDefaultEncoding("UTF-8");


    final Boolean shiroActive = Boolean.valueOf(System.getProperty(SHIRO_ACTIVE_PROPERTY , "false"));
    final Boolean stagemonitorActive = Boolean.valueOf(System.getProperty(STAGEMONITOR_ACTIVE_PROPERTY , "false"));
    if (shiroActive) addShiroFilter().apply(deploymentInfo , DEFAULT_SHIRO_FILTER_NAME , DEFAULT_FILTER_MAPPING);
    if (stagemonitorActive) addStagemonitor().apply(deploymentInfo);

    return deploymentInfo
        .addListeners(listenerInfos)
        .addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME , new WebSocketDeploymentInfo())
        .addServlets(servletInfos);
  }
private static DeploymentInfo createServletDeploymentInfos() {

    final Set<Class<?>> typesAnnotatedWith = DI.getTypesAnnotatedWith(WebServlet.class , true);

    final List<ServletInfo> servletInfos = typesAnnotatedWith
        .stream()
        .filter(s -> new ReflectionUtils().checkInterface(s , HttpServlet.class))
        .map(c -> {
          Class<HttpServlet> servletClass = (Class<HttpServlet>) c;
          final ServletInfo servletInfo = servlet(c.getSimpleName() , servletClass , new ServletInstanceFactory<>(servletClass));
          if (c.isAnnotationPresent(WebInitParam.class)) {
            final WebInitParam[] annotationsByType = c.getAnnotationsByType(WebInitParam.class);
            for (WebInitParam webInitParam : annotationsByType) {
              final String value = webInitParam.value();
              final String name = webInitParam.name();
              servletInfo.addInitParam(name , value);
            }
          }
          final WebServlet annotation = c.getAnnotation(WebServlet.class);
          final String[] urlPatterns = annotation.urlPatterns();
          for (String urlPattern : urlPatterns) {
            servletInfo.addMapping(urlPattern);
          }
          servletInfo.setAsyncSupported(annotation.asyncSupported());
          return servletInfo;
        })
        .filter(servletInfo -> ! servletInfo.getMappings().isEmpty())
        .collect(Collectors.toList());

    final Set<Class<?>> weblisteners = DI.getTypesAnnotatedWith(WebListener.class);
    final List<ListenerInfo> listenerInfos = weblisteners.stream()
                                                         .map(c -> new ListenerInfo((Class<? extends EventListener>) c))
                                                         .collect(Collectors.toList());


    final DeploymentInfo deploymentInfo = deployment()
        .setClassLoader(Main.class.getClassLoader())
        .setContextPath(MYAPP)
        .setDeploymentName("ROOT" + ".war")
        .setDefaultEncoding("UTF-8");


    final Boolean shiroActive = Boolean.valueOf(System.getProperty(SHIRO_ACTIVE_PROPERTY , "false"));
    final Boolean stagemonitorActive = Boolean.valueOf(System.getProperty(STAGEMONITOR_ACTIVE_PROPERTY , "false"));
    if (shiroActive) addShiroFilter().apply(deploymentInfo , DEFAULT_SHIRO_FILTER_NAME , DEFAULT_FILTER_MAPPING);
    if (stagemonitorActive) addStagemonitor().apply(deploymentInfo);

    return deploymentInfo
        .addListeners(listenerInfos)
        .addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME , new WebSocketDeploymentInfo())
        .addServlets(servletInfos);
  }
private static DeploymentInfo createServletDeploymentInfos ( ) { final Set < Class < ? > > typesAnnotatedWith = DI . getTypesAnnotatedWith ( WebServlet . class , true ) ; final List < ServletInfo > servletInfos = typesAnnotatedWith . stream ( ) . filter ( s -> new ReflectionUtils ( ) . checkInterface ( s , HttpServlet . class ) ) . map ( c -> { Class < HttpServlet > servletClass = ( Class < HttpServlet > ) c ; final ServletInfo servletInfo = servlet ( c . getSimpleName ( ) , servletClass , new ServletInstanceFactory <> ( servletClass ) ) ; if ( c . isAnnotationPresent ( WebInitParam . class ) ) { final WebInitParam [ ] annotationsByType = c . getAnnotationsByType ( WebInitParam . class ) ; for ( WebInitParam webInitParam : annotationsByType ) { final String value = webInitParam . value ( ) ; final String name = webInitParam . name ( ) ; servletInfo . addInitParam ( name , value ) ; } } final WebServlet annotation = c . getAnnotation ( WebServlet . class ) ; final String [ ] urlPatterns = annotation . urlPatterns ( ) ; for ( String urlPattern : urlPatterns ) { servletInfo . addMapping ( urlPattern ) ; } servletInfo . setAsyncSupported ( annotation . asyncSupported ( ) ) ; return servletInfo ; } ) . filter ( servletInfo -> ! servletInfo . getMappings ( ) . isEmpty ( ) ) . collect ( Collectors . toList ( ) ) ; final Set < Class < ? > > weblisteners = DI . getTypesAnnotatedWith ( WebListener . class ) ; final List < ListenerInfo > listenerInfos = weblisteners . stream ( ) . map ( c -> new ListenerInfo ( ( Class < ? extends EventListener > ) c ) ) . collect ( Collectors . toList ( ) ) ; final DeploymentInfo deploymentInfo = deployment ( ) . setClassLoader ( Main . class . getClassLoader ( ) ) . setContextPath ( MYAPP ) . setDeploymentName ( "ROOT" + ".war" ) . setDefaultEncoding ( "UTF-8" ) ; final Boolean shiroActive = Boolean . valueOf ( System . getProperty ( SHIRO_ACTIVE_PROPERTY , "false" ) ) ; final Boolean stagemonitorActive = Boolean . valueOf ( System . getProperty ( STAGEMONITOR_ACTIVE_PROPERTY , "false" ) ) ; if ( shiroActive ) addShiroFilter ( ) . apply ( deploymentInfo , DEFAULT_SHIRO_FILTER_NAME , DEFAULT_FILTER_MAPPING ) ; if ( stagemonitorActive ) addStagemonitor ( ) . apply ( deploymentInfo ) ; return deploymentInfo . addListeners ( listenerInfos ) . addServletContextAttribute ( WebSocketDeploymentInfo . ATTRIBUTE_NAME , new WebSocketDeploymentInfo ( ) ) . addServlets ( servletInfos ) ; }
TODO extend for a Vaadin App Version
TODO extend for a Vaadin App Version