/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2014 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package io.undertow.servlet;

import javax.servlet.Filter;
import javax.servlet.MultipartConfigElement;
import javax.servlet.Servlet;

import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.ErrorPage;
import io.undertow.servlet.api.FilterInfo;
import io.undertow.servlet.api.InstanceFactory;
import io.undertow.servlet.api.ListenerInfo;
import io.undertow.servlet.api.LoginConfig;
import io.undertow.servlet.api.SecurityConstraint;
import io.undertow.servlet.api.ServletContainer;
import io.undertow.servlet.api.ServletInfo;
import io.undertow.servlet.api.WebResourceCollection;
import io.undertow.servlet.core.ServletContainerImpl;

import java.util.EventListener;

Utility class for building servlet deployments.
Author:Stuart Douglas
/** * Utility class for building servlet deployments. * * @author Stuart Douglas */
public class Servlets { private static volatile ServletContainer container;
Returns the default servlet container. For most embedded use cases this will be sufficient.
Returns:The default servlet container
/** * Returns the default servlet container. For most embedded use * cases this will be sufficient. * * @return The default servlet container */
public static ServletContainer defaultContainer() { if (container != null) { return container; } synchronized (Servlets.class) { if (container != null) { return container; } return container = ServletContainer.Factory.newInstance(); } }
Creates a new servlet container.
Returns:A new servlet container
/** * Creates a new servlet container. * * @return A new servlet container */
public static ServletContainer newContainer() { return new ServletContainerImpl(); }
Creates a new servlet deployment info structure
Returns:A new deployment info structure
/** * Creates a new servlet deployment info structure * * @return A new deployment info structure */
public static DeploymentInfo deployment() { return new DeploymentInfo(); }
Creates a new servlet description with the given class. The servlet name is inferred from the simple name of the class.
Params:
  • servletClass – The servlet class
Returns:A new servlet description
/** * Creates a new servlet description with the given class. The servlet name is inferred from the simple name of the class. * * @param servletClass The servlet class * @return A new servlet description */
public static ServletInfo servlet(final Class<? extends Servlet> servletClass) { return servlet(servletClass.getSimpleName(), servletClass); }
Creates a new servlet description with the given name and class
Params:
  • name – The servlet name
  • servletClass – The servlet class
Returns:A new servlet description
/** * Creates a new servlet description with the given name and class * * @param name The servlet name * @param servletClass The servlet class * @return A new servlet description */
public static ServletInfo servlet(final String name, final Class<? extends Servlet> servletClass) { return new ServletInfo(name, servletClass); }
Creates a new servlet description with the given name and class
Params:
  • name – The servlet name
  • servletClass – The servlet class
Returns:A new servlet description
/** * Creates a new servlet description with the given name and class * * @param name The servlet name * @param servletClass The servlet class * @return A new servlet description */
public static ServletInfo servlet(final String name, final Class<? extends Servlet> servletClass, final InstanceFactory<? extends Servlet> servlet) { return new ServletInfo(name, servletClass, servlet); }
Creates a new filter description with the given class. The filter name is inferred from the simple name of the class.
Params:
  • filterClass – The filter class
Returns:A new filter description
/** * Creates a new filter description with the given class. The filter name is inferred from the simple name of the class. * * @param filterClass The filter class * @return A new filter description */
public static FilterInfo filter(final Class<? extends Filter> filterClass) { return filter(filterClass.getSimpleName(), filterClass); }
Creates a new filter description with the given name and class
Params:
  • name – The filter name
  • filterClass – The filter class
Returns:A new filter description
/** * Creates a new filter description with the given name and class * * @param name The filter name * @param filterClass The filter class * @return A new filter description */
public static FilterInfo filter(final String name, final Class<? extends Filter> filterClass) { return new FilterInfo(name, filterClass); }
Creates a new filter description with the given name and class
Params:
  • name – The filter name
  • filterClass – The filter class
Returns:A new filter description
/** * Creates a new filter description with the given name and class * * @param name The filter name * @param filterClass The filter class * @return A new filter description */
public static FilterInfo filter(final String name, final Class<? extends Filter> filterClass, final InstanceFactory<? extends Filter> filter) { return new FilterInfo(name, filterClass, filter); }
Creates a new multipart config element
Params:
  • location – the directory location where files will be stored
  • maxFileSize – the maximum size allowed for uploaded files
  • maxRequestSize – the maximum size allowed for multipart/form-data requests
  • fileSizeThreshold – the size threshold after which files will be written to disk
/** * Creates a new multipart config element * * @param location the directory location where files will be stored * @param maxFileSize the maximum size allowed for uploaded files * @param maxRequestSize the maximum size allowed for * multipart/form-data requests * @param fileSizeThreshold the size threshold after which files will * be written to disk */
public static MultipartConfigElement multipartConfig(String location, long maxFileSize, long maxRequestSize, int fileSizeThreshold) { return new MultipartConfigElement(location, maxFileSize, maxRequestSize, fileSizeThreshold); } public static ListenerInfo listener(final Class<? extends EventListener> listenerClass, final InstanceFactory<? extends EventListener> instanceFactory) { return new ListenerInfo(listenerClass, instanceFactory); } public static ListenerInfo listener(final Class<? extends EventListener> listenerClass) { return new ListenerInfo(listenerClass); } public static SecurityConstraint securityConstraint() { return new SecurityConstraint(); } public static WebResourceCollection webResourceCollection() { return new WebResourceCollection(); } private Servlets() { } public static LoginConfig loginConfig(String realmName, String loginPage, String errorPage) { return new LoginConfig(realmName, loginPage, errorPage); } public static LoginConfig loginConfig(final String realmName) { return new LoginConfig(realmName); } public static LoginConfig loginConfig(String mechanismName, String realmName, String loginPage, String errorPage) { return new LoginConfig(mechanismName, realmName, loginPage, errorPage); } public static LoginConfig loginConfig(String mechanismName, final String realmName) { return new LoginConfig(mechanismName, realmName); }
Create an ErrorPage instance for a given exception type
Params:
  • location – The location to redirect to
  • exceptionType – The exception type
Returns: The error page definition
/** * Create an ErrorPage instance for a given exception type * @param location The location to redirect to * @param exceptionType The exception type * @return The error page definition */
public static ErrorPage errorPage(String location, Class<? extends Throwable> exceptionType) { return new ErrorPage(location, exceptionType); }
Create an ErrorPage instance for a given response code
Params:
  • location – The location to redirect to
  • statusCode – The status code
Returns: The error page definition
/** * Create an ErrorPage instance for a given response code * @param location The location to redirect to * @param statusCode The status code * @return The error page definition */
public static ErrorPage errorPage(String location, int statusCode) { return new ErrorPage(location, statusCode); }
Create an ErrorPage that corresponds to the default error page
Params:
  • location – The error page location
Returns:The error page instance
/** * Create an ErrorPage that corresponds to the default error page * * @param location The error page location * @return The error page instance */
public static ErrorPage errorPage(String location) { return new ErrorPage(location); } }