@Override public SessionCookieConfigImpl getSessionCookieConfig() { ensureNotProgramaticListener(); return sessionCookieConfig; }
@Override public Set<SessionTrackingMode> getDefaultSessionTrackingModes() { ensureNotProgramaticListener(); return defaultSessionTrackingModes; }
@Override public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() { ensureNotProgramaticListener(); return Collections.unmodifiableSet(sessionTrackingModes); }
@Override public Map<String, ? extends FilterRegistration> getFilterRegistrations() { ensureNotProgramaticListener(); final Map<String, FilterRegistration> ret = new HashMap<>(); for (Map.Entry<String, FilterInfo> entry : deploymentInfo.getFilters().entrySet()) { ret.put(entry.getKey(), new FilterRegistrationImpl(entry.getValue(), deployment, this)); } return ret; }
@Override public void setSessionTrackingModes(final Set<SessionTrackingMode> sessionTrackingModes) { ensureNotProgramaticListener(); ensureNotInitialized(); if (sessionTrackingModes.size() > 1 && sessionTrackingModes.contains(SessionTrackingMode.SSL)) { throw UndertowServletMessages.MESSAGES.sslCannotBeCombinedWithAnyOtherMethod(); } this.sessionTrackingModes = new HashSet<>(sessionTrackingModes); //TODO: actually make this work }
@Override public FilterRegistration getFilterRegistration(final String filterName) { ensureNotProgramaticListener(); final FilterInfo filterInfo = deploymentInfo.getFilters().get(filterName); if (filterInfo == null) { return null; } return new FilterRegistrationImpl(filterInfo, deployment, this); }
@Override public void setResponseCharacterEncoding(String encoding) { ensureNotInitialized(); ensureNotProgramaticListener(); deploymentInfo.setDefaultResponseEncoding(encoding); }
@Override public Map<String, ? extends ServletRegistration> getServletRegistrations() { ensureNotProgramaticListener(); final Map<String, ServletRegistration> ret = new HashMap<>(); for (Map.Entry<String, ServletHandler> entry : deployment.getServlets().getServletHandlers().entrySet()) { ret.put(entry.getKey(), new ServletRegistrationImpl(entry.getValue().getManagedServlet().getServletInfo(), entry.getValue().getManagedServlet(), deployment)); } return ret; }
@Override public void setSessionTimeout(int sessionTimeout) { ensureNotInitialized(); ensureNotProgramaticListener(); this.defaultSessionTimeout = sessionTimeout; deployment.getSessionManager().setDefaultSessionTimeout(sessionTimeout * 60); }
@Override public void setRequestCharacterEncoding(String encoding) { ensureNotInitialized(); ensureNotProgramaticListener(); deploymentInfo.setDefaultRequestEncoding(getContextPath()); }
@Override public <T extends Filter> T createFilter(final Class<T> clazz) throws ServletException { ensureNotProgramaticListener(); try { return deploymentInfo.getClassIntrospecter().createInstanceFactory(clazz).createInstance().getInstance(); } catch (Exception e) { throw UndertowServletMessages.MESSAGES.couldNotInstantiateComponent(clazz.getName(), e); } }
@Override public <T extends Servlet> T createServlet(final Class<T> clazz) throws ServletException { ensureNotProgramaticListener(); try { return deploymentInfo.getClassIntrospecter().createInstanceFactory(clazz).createInstance().getInstance(); } catch (Exception e) { throw UndertowServletMessages.MESSAGES.couldNotInstantiateComponent(clazz.getName(), e); } }
@Override public ServletRegistration getServletRegistration(final String servletName) { ensureNotProgramaticListener(); final ManagedServlet servlet = deployment.getServlets().getManagedServlet(servletName); if (servlet == null) { return null; } return new ServletRegistrationImpl(servlet.getServletInfo(), servlet, deployment); }
@Override public <T extends EventListener> void addListener(final T t) { ensureNotInitialized(); ensureNotProgramaticListener(); if (ApplicationListeners.listenerState() != NO_LISTENER && ServletContextListener.class.isAssignableFrom(t.getClass())) { throw UndertowServletMessages.MESSAGES.cannotAddServletContextListener(); } ListenerInfo listener = new ListenerInfo(t.getClass(), new ImmediateInstanceFactory<EventListener>(t)); deploymentInfo.addListener(listener); deployment.getApplicationListeners().addListener(new ManagedListener(listener, true)); }
@Override public FilterRegistration.Dynamic addFilter(final String filterName, final Filter filter) { ensureNotProgramaticListener(); ensureNotInitialized(); if (deploymentInfo.getFilters().containsKey(filterName)) { return null; } FilterInfo f = new FilterInfo(filterName, filter.getClass(), new ImmediateInstanceFactory<>(filter)); deploymentInfo.addFilter(f); deployment.getFilters().addFilter(f); return new FilterRegistrationImpl(f, deployment, this); }
@Override public <T extends EventListener> T createListener(final Class<T> clazz) throws ServletException { ensureNotProgramaticListener(); if (!ApplicationListeners.isListenerClass(clazz)) { throw UndertowServletMessages.MESSAGES.listenerMustImplementListenerClass(clazz); } try { return deploymentInfo.getClassIntrospecter().createInstanceFactory(clazz).createInstance().getInstance(); } catch (Exception e) { throw UndertowServletMessages.MESSAGES.couldNotInstantiateComponent(clazz.getName(), e); } }
@Override public FilterRegistration.Dynamic addFilter(final String filterName, final Class<? extends Filter> filterClass) { ensureNotProgramaticListener(); ensureNotInitialized(); if (deploymentInfo.getFilters().containsKey(filterName)) { return null; } try { FilterInfo filter = new FilterInfo(filterName, filterClass,deploymentInfo.getClassIntrospecter().createInstanceFactory(filterClass)); deploymentInfo.addFilter(filter); deployment.getFilters().addFilter(filter); return new FilterRegistrationImpl(filter, deployment, this); } catch (NoSuchMethodException e) { throw UndertowServletMessages.MESSAGES.couldNotCreateFactory(filterClass.getName(),e); } }
@Override public void addListener(final Class<? extends EventListener> listenerClass) { ensureNotInitialized(); ensureNotProgramaticListener(); if (ApplicationListeners.listenerState() != NO_LISTENER && ServletContextListener.class.isAssignableFrom(listenerClass)) { throw UndertowServletMessages.MESSAGES.cannotAddServletContextListener(); } InstanceFactory<? extends EventListener> factory = null; try { factory = deploymentInfo.getClassIntrospecter().createInstanceFactory(listenerClass); } catch (Exception e) { throw new IllegalArgumentException(e); } final ListenerInfo listener = new ListenerInfo(listenerClass, factory); deploymentInfo.addListener(listener); deployment.getApplicationListeners().addListener(new ManagedListener(listener, true)); }
@Override public ServletRegistration.Dynamic addServlet(final String servletName, final Servlet servlet) { ensureNotProgramaticListener(); ensureNotInitialized(); ensureServletNameNotNull(servletName); if (deploymentInfo.getServlets().containsKey(servletName)) { return null; } ServletInfo s = new ServletInfo(servletName, servlet.getClass(), new ImmediateInstanceFactory<>(servlet)); readServletAnnotations(s); deploymentInfo.addServlet(s); ServletHandler handler = deployment.getServlets().addServlet(s); return new ServletRegistrationImpl(s, handler.getManagedServlet(), deployment); }
@Override public ServletRegistration.Dynamic addServlet(final String servletName, final Class<? extends Servlet> servletClass){ ensureNotProgramaticListener(); ensureNotInitialized(); ensureServletNameNotNull(servletName); if (deploymentInfo.getServlets().containsKey(servletName)) { return null; } try { ServletInfo servlet = new ServletInfo(servletName, servletClass, deploymentInfo.getClassIntrospecter().createInstanceFactory(servletClass)); readServletAnnotations(servlet); deploymentInfo.addServlet(servlet); ServletHandler handler = deployment.getServlets().addServlet(servlet); return new ServletRegistrationImpl(servlet, handler.getManagedServlet(), deployment); } catch (NoSuchMethodException e) { throw UndertowServletMessages.MESSAGES.couldNotCreateFactory(servletClass.getName(),e); } }