/*
* Copyright 2013 by Maxim Kalina
*
* 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 net.javaforge.netty.servlet.bridge.config;
import javax.servlet.Filter;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
import java.io.File;
import java.util.*;
public class WebappConfiguration {
private String name;
private int sessionTimeout = 60 * 60; // 1 hour
private Map<String, String> contextParameters;
private Collection<ServletContextListenerConfiguration> contextListeners;
private Collection<FilterConfiguration> filters;
private Collection<ServletConfiguration> servlets;
private File staticResourcesFolder;
public WebappConfiguration addContextParameter(String name, String value) {
if (this.contextParameters == null)
this.contextParameters = new HashMap<String, String>();
this.contextParameters.put(name, value);
return this;
}
public WebappConfiguration addServletContextListener(
Class<? extends ServletContextListener> listenerClass) {
return this
.addServletContextListenerConfigurations(new ServletContextListenerConfiguration(
listenerClass));
}
public WebappConfiguration addServletContextListener(
ServletContextListener listener) {
return this
.addServletContextListenerConfigurations(new ServletContextListenerConfiguration(
listener));
}
public WebappConfiguration addServletContextListenerConfigurations(
ServletContextListenerConfiguration... configs) {
if (configs == null || configs.length == 0)
return this;
return this.addServletContextListenerConfigurations(Arrays
.asList(configs));
}
public WebappConfiguration addServletContextListenerConfigurations(
List<ServletContextListenerConfiguration> configs) {
if (configs == null || configs.size() == 0)
return this;
if (this.contextListeners == null)
this.contextListeners = new ArrayList<ServletContextListenerConfiguration>();
this.contextListeners.addAll(configs);
return this;
}
public Collection<ServletContextListenerConfiguration> getServletContextListenerConfigurations() {
return this.contextListeners != null ? Collections
.unmodifiableCollection(this.contextListeners) : null;
}
public Map<String, String> getContextParameters() {
return this.contextParameters != null ? Collections
.unmodifiableMap(this.contextParameters) : null;
}
public WebappConfiguration setName(String name) {
this.name = name;
return this;
}
public String getName() {
return this.name;
}
public WebappConfiguration setSessionTimeout(int sessionTimeout) {
this.sessionTimeout = sessionTimeout;
return this;
}
public int getSessionTimeout() {
return sessionTimeout;
}
public WebappConfiguration addFilter(Filter filter) {
return this.addFilterConfigurations(new FilterConfiguration(filter));
}
public WebappConfiguration addFilter(Filter filter, String... urlPatterns) {
return this.addFilterConfigurations(new FilterConfiguration(filter,
urlPatterns));
}
public WebappConfiguration addFilter(Class<? extends Filter> filterClass) {
return this
.addFilterConfigurations(new FilterConfiguration(filterClass));
}
public WebappConfiguration addFilter(Class<? extends Filter> filterClass,
String... urlPatterns) {
return this.addFilterConfigurations(new FilterConfiguration(
filterClass, urlPatterns));
}
public WebappConfiguration addFilterConfigurations(
FilterConfiguration... filters) {
if (filters == null || filters.length == 0)
return this;
return this.addfilterConfigurations(Arrays.asList(filters));
}
public WebappConfiguration addfilterConfigurations(
Collection<FilterConfiguration> configs) {
if (configs == null || configs.size() == 0)
return this;
if (this.filters == null)
this.filters = new ArrayList<FilterConfiguration>();
this.filters.addAll(configs);
return this;
}
public Collection<FilterConfiguration> getFilterConfigurations() {
return this.filters != null ? Collections
.unmodifiableCollection(this.filters) : null;
}
public boolean hasFilterConfigurations() {
return this.filters != null && !this.filters.isEmpty();
}
public WebappConfiguration addHttpServlet(HttpServlet servlet) {
return this.addServletConfigurations(new ServletConfiguration(servlet));
}
public WebappConfiguration addHttpServlet(HttpServlet servlet,
String... urlPatterns) {
return this.addServletConfigurations(new ServletConfiguration(servlet,
urlPatterns));
}
public WebappConfiguration addHttpServlet(
Class<? extends HttpServlet> servletClass) {
return this.addServletConfigurations(new ServletConfiguration(
servletClass));
}
public WebappConfiguration addHttpServlet(
Class<? extends HttpServlet> servletClass, String... urlPatterns) {
return this.addServletConfigurations(new ServletConfiguration(
servletClass, urlPatterns));
}
public WebappConfiguration addServletConfigurations(
ServletConfiguration... servlets) {
if (servlets == null || servlets.length == 0)
return this;
return this.addServletConfigurations(Arrays.asList(servlets));
}
public WebappConfiguration addServletConfigurations(
Collection<ServletConfiguration> configs) {
if (configs == null || configs.size() == 0)
return this;
if (this.servlets == null)
this.servlets = new ArrayList<ServletConfiguration>();
this.servlets.addAll(configs);
return this;
}
public Collection<ServletConfiguration> getServletConfigurations() {
return this.servlets != null ? Collections
.unmodifiableCollection(this.servlets) : null;
}
public boolean hasServletConfigurations() {
return this.servlets != null && !this.servlets.isEmpty();
}
public WebappConfiguration setStaticResourcesFolder(String folder) {
return this.setStaticResourcesFolder(new File(folder));
}
public WebappConfiguration setStaticResourcesFolder(File folder) {
if (folder == null)
throw new IllegalArgumentException(
"Static resources folder must be not null!");
if (!folder.exists())
throw new IllegalArgumentException("Static resources folder '"
+ folder.getAbsolutePath() + "' was not found!");
if (!folder.isDirectory())
throw new IllegalArgumentException("Static resources folder '"
+ folder.getAbsolutePath() + "' must be a directory!");
this.staticResourcesFolder = folder;
return this;
}
public File getStaticResourcesFolder() {
return staticResourcesFolder;
}
}