package grails.plugin.lightweightdeploy.connector; import com.google.common.base.Objects; import java.io.IOException; import java.util.Map; public class HttpConfiguration { private int port = 8080; private int adminPort = 8081; private String contextPath = "/"; private int minThreads = 8; private int maxThreads = 128; private int maxIdleTime = 200 * 1000; private int acceptorThreads = 1; private int acceptorThreadPriorityOffset = 0; private int acceptQueueSize = -1; private int maxBufferCount = 1024; private int requestBufferSize = 16 * 1024; private int requestHeaderBufferSize = 6 * 1024; private int responseBufferSize = 32 * 1024; private int responseHeaderBufferSize = 6 * 1024; private boolean reuseAddress = true; private Integer soLingerTime = null; private int lowResourcesMaxIdleTime = 0; private SessionsConfiguration sessionsConfiguration = new SessionsConfiguration(); private SslConfiguration sslConfiguration; private GzipConfiguration gzipConfiguration = new GzipConfiguration(); public HttpConfiguration(final Map<String, ?> httpConfig) throws IOException { this.port = Objects.firstNonNull((Integer) httpConfig.get("port"), port); this.adminPort = Objects.firstNonNull((Integer) httpConfig.get("adminPort"), adminPort); this.contextPath = Objects.firstNonNull((String) httpConfig.get("contextPath"), contextPath); this.minThreads = Objects.firstNonNull((Integer) httpConfig.get("minThreads"), minThreads); this.maxThreads = Objects.firstNonNull((Integer) httpConfig.get("maxThreads"), maxThreads); this.maxIdleTime = Objects.firstNonNull((Integer) httpConfig.get("maxIdleTime"), maxIdleTime); this.acceptQueueSize = Objects.firstNonNull((Integer) httpConfig.get("acceptQueueSize"), acceptQueueSize); this.acceptorThreads = Objects.firstNonNull((Integer) httpConfig.get("acceptorThreads"), acceptorThreads); this.acceptorThreadPriorityOffset = Objects.firstNonNull((Integer) httpConfig.get("acceptorThreadPriorityOffset"), acceptorThreadPriorityOffset); this.maxBufferCount = Objects.firstNonNull((Integer) httpConfig.get("maxBufferCount"), maxBufferCount); this.requestBufferSize = Objects.firstNonNull((Integer) httpConfig.get("requestBufferSize"), requestBufferSize); this.requestHeaderBufferSize = Objects.firstNonNull((Integer) httpConfig.get("requestHeaderBufferSize"), requestHeaderBufferSize); this.responseBufferSize = Objects.firstNonNull((Integer) httpConfig.get("responseBufferSize"), responseBufferSize); this.responseHeaderBufferSize = Objects.firstNonNull((Integer) httpConfig.get("responseHeaderBufferSize"), responseHeaderBufferSize); this.reuseAddress = Objects.firstNonNull((Boolean) httpConfig.get("reuseAddress"), reuseAddress); this.soLingerTime = (Integer) httpConfig.get("soLingerTime"); this.lowResourcesMaxIdleTime = Objects.firstNonNull((Integer) httpConfig.get("lowResourcesMaxIdleTime"), lowResourcesMaxIdleTime); if (httpConfig.containsKey("sessions")) { this.sessionsConfiguration = new SessionsConfiguration((Map<String, ?>) httpConfig.get("sessions")); } if (httpConfig.containsKey("ssl")) { Map<String, ?> sslConfig = (Map<String, ?>) httpConfig.get("ssl"); this.sslConfiguration = new SslConfiguration(sslConfig); } if (httpConfig.containsKey("gzip")) { this.gzipConfiguration = new GzipConfiguration((Map<String, ?>) httpConfig.get("gzip")); } } public int getPort() { return port; } public Integer getAdminPort() { return adminPort; } public String getContextPath() { return contextPath; } public int getMinThreads() { return minThreads; } public int getMaxThreads() { return maxThreads; } public boolean hasAdminPort() { return getAdminPort() != null; } public SslConfiguration getSslConfiguration() { return sslConfiguration; } public int getMaxIdleTime() { return maxIdleTime; } public int getAcceptorThreads() { return acceptorThreads; } public int getAcceptorThreadPriorityOffset() { return acceptorThreadPriorityOffset; } public int getAcceptQueueSize() { return acceptQueueSize; } public int getMaxBufferCount() { return maxBufferCount; } public int getRequestBufferSize() { return requestBufferSize; } public int getRequestHeaderBufferSize() { return requestHeaderBufferSize; } public int getResponseBufferSize() { return responseBufferSize; } public int getResponseHeaderBufferSize() { return responseHeaderBufferSize; } public boolean isReuseAddress() { return reuseAddress; } public Integer getSoLingerTime() { return soLingerTime; } public int getLowResourcesMaxIdleTime() { return lowResourcesMaxIdleTime; } public boolean isMixedMode() { return isSsl() && sslConfiguration.getPort() != null && sslConfiguration.getPort() != port; } public boolean isSsl() { return (getSslConfiguration() != null); } public SessionsConfiguration getSessionsConfiguration() { return sessionsConfiguration; } public GzipConfiguration getGzipConfiguration() { return gzipConfiguration; } }