All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.netty.protocol.servlet.ServletRegistration Maven / Gradle / Ivy

package com.github.netty.protocol.servlet;

import com.github.netty.protocol.servlet.util.UrlMapper;

import javax.servlet.MultipartConfigElement;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletSecurityElement;
import java.util.*;

/**
 * The servlet supportPipeline
 *
 * @author wangzihao
 * 2018/7/14/014
 */
public class ServletRegistration implements javax.servlet.ServletRegistration, javax.servlet.ServletRegistration.Dynamic {
    private final Servlet servlet;
    private final String servletName;
    private final ServletConfig servletConfig;
    private final ServletContext servletContext;
    private final UrlMapper urlMapper;
    private MultipartConfigElement multipartConfigElement;
    private ServletSecurityElement servletSecurityElement;
    private String roleName;
    private boolean asyncSupported = true;
    private int loadOnStartup = -1;
    private Map initParameterMap = new LinkedHashMap<>();
    private final Set mappingSet = new LinkedHashSet() {
        @Override
        public boolean add(String pattern) {
            urlMapper.addMapping(pattern, ServletRegistration.this, servletName);
            return super.add(pattern);
        }

        @Override
        public boolean addAll(Collection c) {
            for (Object o : c) {
                add(o.toString());
            }
            return !c.isEmpty();
        }

        @Override
        public void clear() {
            urlMapper.clear();
            super.clear();
        }
    };
    private volatile boolean initServlet = false;
    private final Set servletSecuritys = new LinkedHashSet<>();

    public ServletRegistration(String servletName, Servlet servlet, ServletContext servletContext, UrlMapper urlMapper) {
        this.servletName = servletName;
        this.servlet = Objects.requireNonNull(servlet);
        this.servletContext = servletContext;
        this.urlMapper = urlMapper;
        this.servletConfig = new ServletConfig() {
            @Override
            public String getServletName() {
                return ServletRegistration.this.servletName;
            }

            @Override
            public javax.servlet.ServletContext getServletContext() {
                return ServletRegistration.this.servletContext;
            }

            @Override
            public String getInitParameter(String name) {
                return ServletRegistration.this.getInitParameter(name);
            }

            @Override
            public Enumeration getInitParameterNames() {
                return Collections.enumeration(ServletRegistration.this.getInitParameters().keySet());
            }
        };
    }

    public ServletSecurityElement getServletSecurityElement() {
        return servletSecurityElement;
    }

    public MultipartConfigElement getMultipartConfigElement() {
        return multipartConfigElement;
    }

    public ServletConfig getServletConfig() {
        return servletConfig;
    }

    public Servlet getServlet() {
        return servlet;
    }

    public Boolean isAsyncSupported() {
        return asyncSupported;
    }

    public int getLoadOnStartup() {
        return loadOnStartup;
    }

    @Override
    public void setLoadOnStartup(int loadOnStartup) {
        this.loadOnStartup = loadOnStartup;
    }

    public boolean isInitServlet() {
        return initServlet;
    }

    public void setInitServlet(boolean initServlet) {
        this.initServlet = initServlet;
    }

    @Override
    public Set addMapping(String... urlPatterns) {
        mappingSet.addAll(Arrays.asList(urlPatterns));
        return mappingSet;
    }

    @Override
    public Collection getMappings() {
        return mappingSet;
    }

    @Override
    public String getRunAsRole() {
        return roleName;
    }

    @Override
    public void setRunAsRole(String roleName) {
        this.roleName = roleName;
    }

    @Override
    public String getName() {
        return servletName;
    }

    @Override
    public String getClassName() {
        return servlet.getClass().getName();
    }

    @Override
    public boolean setInitParameter(String name, String value) {
        return initParameterMap.put(name, value) != null;
    }

    @Override
    public String getInitParameter(String name) {
        return initParameterMap.get(name);
    }

    @Override
    public Set setInitParameters(Map initParameters) {
        this.initParameterMap = initParameters;
        return initParameterMap.keySet();
    }

    @Override
    public Map getInitParameters() {
        return initParameterMap;
    }

    @Override
    public Set setServletSecurity(ServletSecurityElement constraint) {
        this.servletSecurityElement = constraint;
        servletSecuritys.addAll(servletSecurityElement.getMethodNames());
        return servletSecuritys;
    }

    @Override
    public void setMultipartConfig(MultipartConfigElement multipartConfig) {
        this.multipartConfigElement = multipartConfig;
    }

    @Override
    public void setAsyncSupported(boolean isAsyncSupported) {
        this.asyncSupported = isAsyncSupported;
    }

    @Override
    public String toString() {
        return getName();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy