/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.server.httpservlet; import java.util.*; import javax.servlet.ServletConfig; /** * Servlet configuration parser. * * @author ml */ public class PlatypusServerConfig { // configuration parameters public static final String APPELEMENT_CONF_PARAM = "appelement"; public static final String DEF_DATASOURCE_CONF_PARAM = "default-datasource"; public static final String GLOBAL_API_CONF_PARAM = "global-api"; public static final String SOURCE_PATH_CONF_PARAM = "source-path"; public static final String MAX_JDBC_THREADS_CONF_PARAM = "max-jdbc-threads"; public static final String MAX_BIO_THREADS_CONF_PARAM = "max-bio-threads"; public static final String MAX_LPC_THREADS_CONF_PARAM = "max-lpc-threads"; public static final String MAX_SPACES_CONF_PARAM = "max-script-contexts"; public static final String LPC_QUEUE_SIZE_CONF_PARAM = "lpc-queue-size"; public static final String WATCH_CONF_PARAM = "watch"; // protected String appElementName; protected String defaultDatasourceName; protected String sourcePath; protected boolean globalAPI; protected int maximumJdbcThreads = 25; protected int maximumBIOTreads = 25; protected int maximumSpaces = (Runtime.getRuntime().availableProcessors() + 1) * 2; protected int maximumLpcQueueSize = Integer.MAX_VALUE; protected int maximumLpcThreads = Runtime.getRuntime().availableProcessors() + 1; protected boolean watch = false; public static PlatypusServerConfig parse(ServletConfig aConfig) throws Exception { return new PlatypusServerConfig(aConfig); } private PlatypusServerConfig(ServletConfig aConfig) throws Exception { Enumeration<String> paramNames = aConfig.getServletContext().getInitParameterNames(); if (paramNames != null && paramNames.hasMoreElements()) { while (paramNames.hasMoreElements()) { String paramName = paramNames.nextElement(); if (paramName != null) { String paramValue = aConfig.getServletContext().getInitParameter(paramName); if (MAX_JDBC_THREADS_CONF_PARAM.equals(paramName)) { maximumJdbcThreads = Double.valueOf(paramValue).intValue(); } else if (MAX_BIO_THREADS_CONF_PARAM.equalsIgnoreCase(paramName)) { maximumBIOTreads = Double.valueOf(paramValue).intValue(); } else if (MAX_SPACES_CONF_PARAM.equalsIgnoreCase(paramName)) { maximumSpaces = Double.valueOf(paramValue).intValue(); } else if (MAX_LPC_THREADS_CONF_PARAM.equalsIgnoreCase(paramName)) { maximumLpcThreads = Double.valueOf(paramValue).intValue(); } else if (LPC_QUEUE_SIZE_CONF_PARAM.equalsIgnoreCase(paramName)) { maximumLpcQueueSize = Double.valueOf(paramValue).intValue(); } else if (DEF_DATASOURCE_CONF_PARAM.equalsIgnoreCase(paramName)) { defaultDatasourceName = paramValue; } else if (SOURCE_PATH_CONF_PARAM.equalsIgnoreCase(paramName)) { sourcePath = paramValue; } else if (GLOBAL_API_CONF_PARAM.equalsIgnoreCase(paramName)) { globalAPI = Boolean.valueOf(paramValue); } else if (APPELEMENT_CONF_PARAM.equalsIgnoreCase(paramName)) { appElementName = paramValue; if (appElementName.toLowerCase().endsWith(".js")) { appElementName = appElementName.substring(0, appElementName.length() - 3); } } else if (WATCH_CONF_PARAM.equalsIgnoreCase(paramName)) { watch = Boolean.valueOf(paramValue); } } } } } public String getAppElementName() { return appElementName; } public String getDefaultDatasourceName() { return defaultDatasourceName; } public String getSourcePath() { return sourcePath; } public boolean isGlobalAPI() { return globalAPI; } public int getMaximumJdbcThreads() { return maximumJdbcThreads; } public int getMaximumBIOTreads() { return maximumBIOTreads; } public int getMaximumSpaces() { return maximumSpaces; } public int getMaximumLpcQueueSize() { return maximumLpcQueueSize; } public int getMaximumLpcThreads() { return maximumLpcThreads; } public boolean isWatch() { return watch; } }