/* * Copyright 2001-2013 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") */ package com.uwyn.rife.config; import com.uwyn.rife.config.exceptions.DateFormatInitializationException; import com.uwyn.rife.tools.Convert; import com.uwyn.rife.tools.Localization; import com.uwyn.rife.tools.StringUtils; import com.uwyn.rife.tools.exceptions.LightweightError; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; public abstract class RifeConfig { public static abstract class Global { public static final String PARAM_TEMP_PATH = "TEMP_PATH"; public static final String PARAM_APPLICATION_CLASSPATH = "APPLICATION_CLASSPATH"; public static final String PARAM_JAVA_COMPILER_PATH = "JAVA_COMPILER_PATH"; public static final String PARAM_JAVA_COMPILER_ARGS = "JAVA_COMPILER_ARGS"; public static final String PARAM_JAVA_COMPILER_INTERNAL = "JAVA_COMPILER_INTERNAL"; public static final String PARAM_AUTO_RELOAD_DELAY = "AUTO_RELOAD_DELAY"; public static final String PARAM_USE_FAST_EXCEPTIONS = "USE_FAST_EXCEPTIONS"; private static final String DEFAULT_JAVA_COMPILER_PATH; static { if (System.getProperty("os.name").toLowerCase().contains("windows")) { DEFAULT_JAVA_COMPILER_PATH = "javac.exe"; } else { DEFAULT_JAVA_COMPILER_PATH = "javac"; } } private static final boolean DEFAULT_JAVA_COMPILER_INTERNAL = false; private static final int DEFAULT_AUTO_RELOAD_DELAY = 10 * 1000; private static String sFallbackTempPath; static { String tmpdir = System.getProperty("java.io.tmpdir"); sFallbackTempPath = StringUtils.stripFromEnd(tmpdir, File.separator); } private static String sFallbackApplicationClassPath = ""; private static int sAutoReloadDelay = DEFAULT_AUTO_RELOAD_DELAY; public static String getTempPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TEMP_PATH, sFallbackTempPath); } return sFallbackTempPath; } public static synchronized void setTempPath(String path) { if (null == path) { throw new IllegalArgumentException("path can't be null."); } if (0 == path.length()) { throw new IllegalArgumentException("path can't be empty."); } if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_TEMP_PATH, path); } else { sFallbackTempPath = path; } } public static String getApplicationClassPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_APPLICATION_CLASSPATH, sFallbackApplicationClassPath); } return sFallbackApplicationClassPath; } public static synchronized void setApplicationClassPath(String path) { if (null == path) { throw new IllegalArgumentException("path can't be null."); } if (0 == path.length()) { throw new IllegalArgumentException("path can't be empty."); } if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_APPLICATION_CLASSPATH, path); } else { sFallbackApplicationClassPath = path; } } public static String getJavaCompilerPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_JAVA_COMPILER_PATH, DEFAULT_JAVA_COMPILER_PATH); } return DEFAULT_JAVA_COMPILER_PATH; } public static boolean isJavaCompilerPathSet() { return Config.hasRepInstance() && Config.getRepInstance().hasParameter(PARAM_JAVA_COMPILER_PATH); } public static boolean getJavaCompilerInternal() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_JAVA_COMPILER_INTERNAL, DEFAULT_JAVA_COMPILER_INTERNAL); } return DEFAULT_JAVA_COMPILER_INTERNAL; } public static boolean areJavaCompilerArgsSet() { return Config.hasRepInstance() && Config.getRepInstance().hasList(PARAM_JAVA_COMPILER_ARGS); } public static Collection<String> getJavaCompilerArgs() { if (Config.hasRepInstance()) { return Config.getRepInstance().getStringItems(PARAM_JAVA_COMPILER_ARGS); } return null; } public static boolean isInternalJavaCompilerAvailable() { try { Class klass = Class.forName("com.sun.tools.javac.Main"); if (null == klass) { return false; } } catch (ClassNotFoundException e) { return false; } return true; } public static int getAutoReloadDelay() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_AUTO_RELOAD_DELAY, sAutoReloadDelay); } return sAutoReloadDelay; } public static synchronized void setAutoReloadDelay(int delay) { if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_AUTO_RELOAD_DELAY, delay); } else { sAutoReloadDelay = delay; } } public static boolean getUseFastExceptions() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_USE_FAST_EXCEPTIONS, LightweightError.getUseFastExceptions()); } return LightweightError.getUseFastExceptions(); } public static synchronized void setUseFastExceptions(boolean toggle) { if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_USE_FAST_EXCEPTIONS, toggle); } else { LightweightError.setUseFastExceptions(toggle); } } } public static abstract class Authentication { public static final String PARAM_SESSION_DURATION = "SESSION_DURATION"; public static final String PARAM_SESSION_PURGE_FREQUENCY = "SESSION_PURGE_FREQUENCY"; public static final String PARAM_SESSION_PURGE_SCALE = "SESSION_PURGE_SCALE"; public static final String PARAM_SESSION_RESTRICT_HOSTIP = "SESSION_RESTRICT_HOSTIP"; public static final String PARAM_REMEMBER_DURATION = "REMEMBER_DURATION"; public static final String PARAM_REMEMBER_PURGE_FREQUENCY = "REMEMBER_PURGE_FREQUENCY"; public static final String PARAM_REMEMBER_PURGE_SCALE = "REMEMBER_PURGE_SCALE"; public static final String PARAM_TABLE_ROLE = "TABLE_ROLE"; public static final String PARAM_SEQUENCE_ROLE = "SEQUENCE_ROLE"; public static final String PARAM_TABLE_USER = "TABLE_USER"; public static final String PARAM_TABLE_ROLELINK = "TABLE_ROLELINK"; public static final String PARAM_TABLE_AUTHENTICATION = "TABLE_AUTHENTICATION"; public static final String PARAM_TABLE_REMEMBER = "TABLE_REMEMBER"; public static final String PARAM_ROLE_NAME_MAXIMUM_LENGTH = "ROLE_NAME_MAXIMUM_LENGTH"; public static final String PARAM_LOGIN_MAXIMUM_LENGTH = "LOGIN_NAME_MAXIMUM_LENGTH"; public static final String PARAM_LOGIN_MINIMUM_LENGTH = "LOGIN_NAME_MINIMUM_LENGTH"; public static final String PARAM_PASSWORD_MAXIMUM_LENGTH = "PASSWORD_MAXIMUM_LENGTH"; public static final String PARAM_PASSWORD_MINIMUM_LENGTH = "PASSWORD_MINIMUM_LENGTH"; private static final long DEFAULT_SESSION_DURATION = 1000 * 60 * 20; // 20 minutes private static final int DEFAULT_SESSION_PURGE_FREQUENCY = 20; // 20 out of 1000 times, means 1/50th of the time private static final int DEFAULT_SESSION_PURGE_SCALE = 1000; private static final boolean DEFAULT_SESSION_RESTRICT_HOSTIP = false; private static final long DEFAULT_REMEMBER_DURATION = 1000L * 60L * 60L * 24L * 30L * 3L; // 3 months private static final int DEFAULT_REMEMBER_PURGE_FREQUENCY = 20; // 20 out of 1000 times, means 1/50th of the time private static final int DEFAULT_REMEMBER_PURGE_SCALE = 1000; private static final int DEFAULT_ROLE_NAME_MAXIMUM_LENGTH = 20; private static final int DEFAULT_LOGIN_MAXIMUM_LENGTH = 20; private static final int DEFAULT_LOGIN_MINIMUM_LENGTH = 5; private static final int DEFAULT_PASSWORD_MAXIMUM_LENGTH = 100; private static final int DEFAULT_PASSWORD_MINIMUM_LENGTH = 5; private static final String DEFAULT_TABLE_ROLE = "AuthRole"; private static final String DEFAULT_SEQUENCE_ROLE = "SEQ_AUTHROLE"; private static final String DEFAULT_TABLE_USER = "AuthUser"; private static final String DEFAULT_TABLE_ROLELINK = "AuthRoleLink"; private static final String DEFAULT_TABLE_AUTHENTICATION = "Authentication"; private static final String DEFAULT_TABLE_REMEMBER = "AuthRemember"; public static int getPasswordMinimumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_PASSWORD_MINIMUM_LENGTH, DEFAULT_PASSWORD_MINIMUM_LENGTH); } return DEFAULT_PASSWORD_MINIMUM_LENGTH; } public static int getPasswordMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_PASSWORD_MAXIMUM_LENGTH, DEFAULT_PASSWORD_MAXIMUM_LENGTH); } return DEFAULT_PASSWORD_MAXIMUM_LENGTH; } public static int getLoginMinimumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_LOGIN_MINIMUM_LENGTH, DEFAULT_LOGIN_MINIMUM_LENGTH); } return DEFAULT_LOGIN_MINIMUM_LENGTH; } public static int getLoginMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_LOGIN_MAXIMUM_LENGTH, DEFAULT_LOGIN_MAXIMUM_LENGTH); } return DEFAULT_LOGIN_MAXIMUM_LENGTH; } public static int getRoleNameMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_ROLE_NAME_MAXIMUM_LENGTH, DEFAULT_ROLE_NAME_MAXIMUM_LENGTH); } return DEFAULT_ROLE_NAME_MAXIMUM_LENGTH; } public static long getSessionDuration() { if (Config.hasRepInstance()) { return Config.getRepInstance().getLong(PARAM_SESSION_DURATION, DEFAULT_SESSION_DURATION); } return DEFAULT_SESSION_DURATION; } public static int getSessionPurgeFrequency() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_SESSION_PURGE_FREQUENCY, DEFAULT_SESSION_PURGE_FREQUENCY); } return DEFAULT_SESSION_PURGE_FREQUENCY; } public static int getSessionPurgeScale() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_SESSION_PURGE_SCALE, DEFAULT_SESSION_PURGE_SCALE); } return DEFAULT_SESSION_PURGE_SCALE; } public static boolean getSessionRestrictHostIp() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_SESSION_RESTRICT_HOSTIP, DEFAULT_SESSION_RESTRICT_HOSTIP); } return DEFAULT_SESSION_RESTRICT_HOSTIP; } public static long getRememberDuration() { if (Config.hasRepInstance()) { return Config.getRepInstance().getLong(PARAM_REMEMBER_DURATION, DEFAULT_REMEMBER_DURATION); } return DEFAULT_REMEMBER_DURATION; } public static int getRememberPurgeFrequency() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_REMEMBER_PURGE_FREQUENCY, DEFAULT_REMEMBER_PURGE_FREQUENCY); } return DEFAULT_REMEMBER_PURGE_FREQUENCY; } public static int getRememberPurgeScale() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_REMEMBER_PURGE_SCALE, DEFAULT_REMEMBER_PURGE_SCALE); } return DEFAULT_REMEMBER_PURGE_SCALE; } public static String getTableRole() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_ROLE, DEFAULT_TABLE_ROLE); } return DEFAULT_TABLE_ROLE; } public static String getSequenceRole() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_SEQUENCE_ROLE, DEFAULT_SEQUENCE_ROLE); } return DEFAULT_SEQUENCE_ROLE; } public static String getTableUser() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_USER, DEFAULT_TABLE_USER); } return DEFAULT_TABLE_USER; } public static String getTableRoleLink() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_ROLELINK, DEFAULT_TABLE_ROLELINK); } return DEFAULT_TABLE_ROLELINK; } public static String getTableAuthentication() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_AUTHENTICATION, DEFAULT_TABLE_AUTHENTICATION); } return DEFAULT_TABLE_AUTHENTICATION; } public static String getTableRemember() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_REMEMBER, DEFAULT_TABLE_REMEMBER); } return DEFAULT_TABLE_REMEMBER; } } public static abstract class Cmf { public static final String PARAM_SEQUENCE_CONTENTREPOSITORY = "SEQUENCE_CONTENTREPOSITORY"; public static final String PARAM_SEQUENCE_CONTENTINFO = "SEQUENCE_CONTENTINFO"; public static final String PARAM_TABLE_CONTENTREPOSITORY = "TABLE_CONTENTREPOSITORY"; public static final String PARAM_TABLE_CONTENTINFO = "TABLE_CONTENTINFO"; public static final String PARAM_TABLE_CONTENTATTRIBUTE = "TABLE_CONTENTATTRIBUTE"; public static final String PARAM_TABLE_CONTENTPROPERTY = "TABLE_CONTENTPROPERTY"; public static final String PARAM_TABLE_CONTENTSTOREIMAGE = "TABLE_CONTENTSTOREIMAGE"; public static final String PARAM_TABLE_CONTENTSTORETEXT = "TABLE_CONTENTSTORETEXT"; public static final String PARAM_TABLE_CONTENTSTORERAWINFO = "TABLE_CONTENTSTORERAWINFO"; public static final String PARAM_TABLE_CONTENTSTORERAWCHUNK = "TABLE_CONTENTSTORERAWCHUNK"; private static final String DEFAULT_SEQUENCE_CONTENTREPOSITORY = "SEQ_CONTENTREPOSITORY"; private static final String DEFAULT_SEQUENCE_CONTENTINFO = "SEQ_CONTENTINFO"; private static final String DEFAULT_TABLE_CONTENTREPOSITORY = "ContentRepository"; private static final String DEFAULT_TABLE_CONTENTINFO = "ContentInfo"; private static final String DEFAULT_TABLE_CONTENTATTRIBUTE = "ContentAttribute"; private static final String DEFAULT_TABLE_CONTENTPROPERTY = "ContentProperty"; private static final String DEFAULT_TABLE_CONTENTSTOREIMAGE = "ContentStoreImage"; private static final String DEFAULT_TABLE_CONTENTSTORETEXT = "ContentStoreText"; private static final String DEFAULT_TABLE_CONTENTSTORERAWINFO = "ContentStoreRawInfo"; private static final String DEFAULT_TABLE_CONTENTSTORERAWCHUNK = "ContentStoreRawChunk"; public static String getSequenceContentRepository() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_SEQUENCE_CONTENTREPOSITORY, DEFAULT_SEQUENCE_CONTENTREPOSITORY); } return DEFAULT_SEQUENCE_CONTENTREPOSITORY; } public static String getSequenceContentInfo() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_SEQUENCE_CONTENTINFO, DEFAULT_SEQUENCE_CONTENTINFO); } return DEFAULT_SEQUENCE_CONTENTINFO; } public static String getTableContentRepository() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTREPOSITORY, DEFAULT_TABLE_CONTENTREPOSITORY); } return DEFAULT_TABLE_CONTENTREPOSITORY; } public static String getTableContentInfo() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTINFO, DEFAULT_TABLE_CONTENTINFO); } return DEFAULT_TABLE_CONTENTINFO; } public static String getTableContentAttribute() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTATTRIBUTE, DEFAULT_TABLE_CONTENTATTRIBUTE); } return DEFAULT_TABLE_CONTENTATTRIBUTE; } public static String getTableContentProperty() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTPROPERTY, DEFAULT_TABLE_CONTENTPROPERTY); } return DEFAULT_TABLE_CONTENTPROPERTY; } public static String getTableContentStoreImage() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTSTOREIMAGE, DEFAULT_TABLE_CONTENTSTOREIMAGE); } return DEFAULT_TABLE_CONTENTSTOREIMAGE; } public static String getTableContentStoreText() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTSTORETEXT, DEFAULT_TABLE_CONTENTSTORETEXT); } return DEFAULT_TABLE_CONTENTSTORETEXT; } public static String getTableContentStoreRawInfo() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTSTORERAWINFO, DEFAULT_TABLE_CONTENTSTORERAWINFO); } return DEFAULT_TABLE_CONTENTSTORERAWINFO; } public static String getTableContentStoreRawChunk() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_CONTENTSTORERAWCHUNK, DEFAULT_TABLE_CONTENTSTORERAWCHUNK); } return DEFAULT_TABLE_CONTENTSTORERAWCHUNK; } } public static abstract class Database { public static final String PARAM_TRANSACTION_TIMEOUT = "TRANSACTION_TIMEOUT"; public static final String PARAM_SQL_DEBUG_TRACE = "SQL_DEBUG_TRACE"; private static final int DEFAULT_TRANSACTION_TIMEOUT = 0; // 0 seconds : turned off private static final boolean DEFAULT_SQL_DEBUG_TRACE = false; public static int getTransactionTimeout() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_TRANSACTION_TIMEOUT, DEFAULT_TRANSACTION_TIMEOUT); } return DEFAULT_TRANSACTION_TIMEOUT; } public static boolean getSqlDebugTrace() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_SQL_DEBUG_TRACE, DEFAULT_SQL_DEBUG_TRACE); } return DEFAULT_SQL_DEBUG_TRACE; } } public static abstract class Engine { public static final String PARAM_DEFAULT_CONTENT_TYPE = "DEFAULT_CONTENT_TYPE"; public static final String PARAM_ELEMENT_AUTO_RELOAD = "ELEMENT_AUTO_RELOAD"; public static final String PARAM_ELEMENT_GENERATION_PATH = "ELEMENT_GENERATION_PATH"; public static final String PARAM_ELEMENT_DEBUG_TRACE = "ELEMENT_DEBUG_TRACE"; public static final String PARAM_ELEMENT_DEBUG_MEMORY = "ELEMENT_DEBUG_MEMORY"; public static final String PARAM_LOG_ENGINE_EXCEPTIONS = "PRETTY_LOG_EXCEPTIONS"; public static final String PARAM_PRETTY_ENGINE_EXCEPTIONS = "PRETTY_ENGINE_EXCEPTIONS"; public static final String PARAM_FILEUPLOAD_PATH = "FILEUPLOAD_PATH"; public static final String PARAM_FILEUPLOAD_SIZE_LIMIT = "FILEUPLOAD_SIZE_LIMIT"; public static final String PARAM_FILEUPLOAD_SIZE_CHECK = "FILEUPLOAD_SIZE_CHECK"; public static final String PARAM_FILEUPLOAD_SIZE_EXCEPTION = "FILEUPLOAD_SIZE_EXCEPTION"; public static final String PARAM_SITE_AUTO_RELOAD = "SITE_AUTO_RELOAD"; public static final String PARAM_CONTINUATION_DURATION = "CONTINUATION_DURATION"; public static final String PARAM_CONTINUATION_PURGE_FREQUENCY = "CONTINUATION_PURGE_FREQUENCY"; public static final String PARAM_CONTINUATION_PURGE_SCALE = "CONTINUATION_PURGE_SCALE"; public static final String PARAM_GZIP_COMPRESSION = "GZIP_COMPRESSION"; public static final String PARAM_GZIP_COMPRESSION_TYPES = "GZIP_COMPRESSION_TYPES"; public static final String PARAM_LOCAL_FORWARD_PORT = "LOCAL_FORWARD_PORT"; public static final String PARAM_PROXY_ROOTURL = "PROXY_ROOTURL"; public static final String PARAM_WEBAPP_CONTEXT_PATH = "WEBAPP_CONTEXT_PATH"; public static final String PARAM_RESPONSE_REQUIRES_SITE = "RESPONSE_REQUIRES_SITE"; public static final String PARAM_SITE_INITIALIZING_REDIRECT_URL = "SITE_INITIALIZING_REDIRECT_URL"; public static final String PARAM_SITE_INITIALIZING_PASSTHROUGH_SUFFIXES = "SITE_INITIALIZING_PASSTHROUGH_SUFFIXES"; public static final String PARAM_REQUEST_ENCODING = "REQUEST_ENCODING"; public static final String PARAM_RESPONSE_ENCODING = "RESPONSE_ENCODING"; public static final String PARAM_SESSION_STATE_STORE_CLONING = "SESSION_STATE_STORE_CLONING"; private static final String DEFAULT_DEFAULT_CONTENT_TYPE = "text/html"; private static final boolean DEFAULT_ELEMENT_AUTO_RELOAD = true; private static final boolean DEFAULT_ELEMENT_DEBUG_TRACE = false; private static final boolean DEFAULT_ELEMENT_DEBUG_MEMORY = false; private static final boolean DEFAULT_LOG_ENGINE_EXCEPTIONS = true; private static final boolean DEFAULT_PRETTY_ENGINE_EXCEPTIONS = true; private static final long DEFAULT_FILEUPLOAD_SIZE_LIMIT = 1024 * 1024 * 2; // 2MB private static final boolean DEFAULT_FILEUPLOAD_SIZE_CHECK = true; private static final boolean DEFAULT_FILEUPLOAD_SIZE_EXCEPTION = false; private static final boolean DEFAULT_SITE_AUTO_RELOAD = true; private static final boolean DEFAULT_GZIP_COMPRESSION = false; private static final Collection<String> DEFAULT_GZIP_COMPRESSION_TYPES = new ArrayList<String>() {{ add("text/html"); add("text/xml"); add("text/plain"); add("text/css"); add("text/javascript"); add("application/xml"); add("application/xhtml+xml"); }}; private static final int DEFAULT_LOCAL_FORWARD_PORT = -1; private static final String DEFAULT_PROXY_ROOTURL = null; private static final String DEFAULT_WEBAPP_CONTEXT_PATH = null; private static final boolean DEFAULT_RESPONSE_REQUIRES_SITE = true; private static final String DEFAULT_SITE_INITIALIZING_REDIRECT_URL = null; private static final Collection<String> DEFAULT_SITE_INITIALIZING_PASSTHROUGH_SUFFIXES = new ArrayList<String>() {{ add(".gif"); add(".png"); add(".jpg"); add(".jpeg"); add(".bmp"); add(".ico"); add(".css"); add(".js"); add(".swf"); add(".html"); add(".htm"); add(".htc"); add(".class"); add(".jar"); add(".zip"); add(".arj"); add(".gz"); add(".z"); add(".wav"); add(".mp3"); add(".wma"); add(".mpg"); add(".avi"); add(".ogg"); add(".txt"); }}; private static final String DEFAULT_REQUEST_ENCODING = StringUtils.ENCODING_UTF_8; private static final String DEFAULT_RESPONSE_ENCODING = StringUtils.ENCODING_UTF_8; private static final boolean DEFAULT_SESSION_STATE_STORE_CLONING = true; private static boolean sLogEngineExceptions = DEFAULT_LOG_ENGINE_EXCEPTIONS; public static String getDefaultContentType() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_DEFAULT_CONTENT_TYPE, DEFAULT_DEFAULT_CONTENT_TYPE); } return DEFAULT_DEFAULT_CONTENT_TYPE; } public static boolean getElementAutoReload() { Object value = System.getProperties().get(PARAM_ELEMENT_AUTO_RELOAD); return Convert.toBoolean(value, DEFAULT_ELEMENT_AUTO_RELOAD); } public static String getElementGenerationPath() { String generation_path = null; Object value = System.getProperties().get(PARAM_ELEMENT_GENERATION_PATH); if (value != null) { generation_path = value.toString(); } if (null == generation_path) { return RifeConfig.Global.getTempPath() + File.separator + "rife_elements"; } generation_path += File.separator; return generation_path; } public static boolean getElementDebugTrace() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_ELEMENT_DEBUG_TRACE, DEFAULT_ELEMENT_DEBUG_TRACE); } return DEFAULT_ELEMENT_DEBUG_TRACE; } public static boolean getElementDebugMemory() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_ELEMENT_DEBUG_MEMORY, DEFAULT_ELEMENT_DEBUG_MEMORY); } return DEFAULT_ELEMENT_DEBUG_MEMORY; } public static boolean getPrettyEngineExceptions() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_PRETTY_ENGINE_EXCEPTIONS, DEFAULT_PRETTY_ENGINE_EXCEPTIONS); } return DEFAULT_PRETTY_ENGINE_EXCEPTIONS; } public static boolean getLogEngineExceptions() { if (Config.hasRepInstance() && Config.getRepInstance().hasParameter(PARAM_LOG_ENGINE_EXCEPTIONS)) { return Config.getRepInstance().getBool(PARAM_LOG_ENGINE_EXCEPTIONS, DEFAULT_LOG_ENGINE_EXCEPTIONS); } return sLogEngineExceptions; } public static synchronized void setLogEngineExceptions(boolean generate) { if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_LOG_ENGINE_EXCEPTIONS, generate); } else { sLogEngineExceptions = generate; } } public static String getFileUploadPath() { String fileupload_path = null; if (Config.hasRepInstance()) { fileupload_path = Config.getRepInstance().getString(PARAM_FILEUPLOAD_PATH); } if (null == fileupload_path) { return RifeConfig.Global.getTempPath() + File.separator + "rife_uploads"; } fileupload_path += File.separator; return fileupload_path; } public static long getFileuploadSizeLimit() { if (Config.hasRepInstance()) { return Config.getRepInstance().getLong(PARAM_FILEUPLOAD_SIZE_LIMIT, DEFAULT_FILEUPLOAD_SIZE_LIMIT); } return DEFAULT_FILEUPLOAD_SIZE_LIMIT; } public static boolean getFileUploadSizeCheck() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_FILEUPLOAD_SIZE_CHECK, DEFAULT_FILEUPLOAD_SIZE_CHECK); } return DEFAULT_FILEUPLOAD_SIZE_CHECK; } public static boolean getFileUploadSizeException() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_FILEUPLOAD_SIZE_EXCEPTION, DEFAULT_FILEUPLOAD_SIZE_EXCEPTION); } return DEFAULT_FILEUPLOAD_SIZE_EXCEPTION; } public static boolean getSiteAutoReload() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_SITE_AUTO_RELOAD, DEFAULT_SITE_AUTO_RELOAD); } return DEFAULT_SITE_AUTO_RELOAD; } // TODO // public static long getContinuationDuration() // { // if (Config.hasRepInstance()) // { // return Config.getRepInstance().getLong(PARAM_CONTINUATION_DURATION, ContinuationConfigRuntimeDefaults.DEFAULT_CONTINUATION_DURATION); // } // // return ContinuationConfigRuntimeDefaults.DEFAULT_CONTINUATION_DURATION; // } // // public static int getContinuationPurgeFrequency() // { // if (Config.hasRepInstance()) // { // return Config.getRepInstance().getInt(PARAM_CONTINUATION_PURGE_FREQUENCY, ContinuationConfigRuntimeDefaults.DEFAULT_CONTINUATION_PURGE_FREQUENCY); // } // // return ContinuationConfigRuntimeDefaults.DEFAULT_CONTINUATION_PURGE_FREQUENCY; // } // // public static int getContinuationPurgeScale() // { // if (Config.hasRepInstance()) // { // return Config.getRepInstance().getInt(PARAM_CONTINUATION_PURGE_SCALE, ContinuationConfigRuntimeDefaults.DEFAULT_CONTINUATION_PURGE_SCALE); // } // // return ContinuationConfigRuntimeDefaults.DEFAULT_CONTINUATION_PURGE_SCALE; // } public static boolean getGzipCompression() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_GZIP_COMPRESSION, DEFAULT_GZIP_COMPRESSION); } return DEFAULT_GZIP_COMPRESSION; } public static Collection<String> getGzipCompressionTypes() { if (Config.hasRepInstance()) { Collection<String> types = Config.getRepInstance().getStringItems(PARAM_GZIP_COMPRESSION_TYPES); if (null == types) { return DEFAULT_GZIP_COMPRESSION_TYPES; } return types; } return DEFAULT_GZIP_COMPRESSION_TYPES; } public static int getLocalForwardPort() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_LOCAL_FORWARD_PORT, DEFAULT_LOCAL_FORWARD_PORT); } return DEFAULT_LOCAL_FORWARD_PORT; } public static String getProxyRootUrl() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_PROXY_ROOTURL, DEFAULT_PROXY_ROOTURL); } return DEFAULT_PROXY_ROOTURL; } public static String getWebappContextPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_WEBAPP_CONTEXT_PATH, DEFAULT_WEBAPP_CONTEXT_PATH); } return DEFAULT_WEBAPP_CONTEXT_PATH; } public static boolean getResponseRequiresSite() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_RESPONSE_REQUIRES_SITE, DEFAULT_RESPONSE_REQUIRES_SITE); } return DEFAULT_RESPONSE_REQUIRES_SITE; } public static String getSiteInitializingRedirectUrl() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_SITE_INITIALIZING_REDIRECT_URL, DEFAULT_SITE_INITIALIZING_REDIRECT_URL); } return DEFAULT_SITE_INITIALIZING_REDIRECT_URL; } public static Collection<String> getSiteInitializingPassthroughSuffixes() { if (Config.hasRepInstance()) { Collection<String> types = Config.getRepInstance().getStringItems(PARAM_SITE_INITIALIZING_PASSTHROUGH_SUFFIXES); if (null == types) { return DEFAULT_SITE_INITIALIZING_PASSTHROUGH_SUFFIXES; } return types; } return DEFAULT_SITE_INITIALIZING_PASSTHROUGH_SUFFIXES; } public static String getRequestEncoding() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_REQUEST_ENCODING, DEFAULT_REQUEST_ENCODING); } return DEFAULT_REQUEST_ENCODING; } public static String getResponseEncoding() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_RESPONSE_ENCODING, DEFAULT_RESPONSE_ENCODING); } return DEFAULT_RESPONSE_ENCODING; } public static boolean getSessionStateStoreCloning() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_SESSION_STATE_STORE_CLONING, DEFAULT_SESSION_STATE_STORE_CLONING); } return DEFAULT_SESSION_STATE_STORE_CLONING; } } public static abstract class Mime { public static final String PARAM_MIME_MAPPING = "MIME_MAPPING"; private static Map<String, String> DEFAULT_MIME_MAPPING = new HashMap<String, String>() {{ put("ez", "application/andrew-inset"); put("jnlp", "application/jnlp"); put("hqx", "application/mac-binhex40"); put("cpt", "application/mac-compactpro"); put("mathml", "application/mathml+xml"); put("bin", "application/octet-stream"); put("dms", "application/octet-stream"); put("lha", "application/octet-stream"); put("lzh", "application/octet-stream"); put("exe", "application/octet-stream"); put("class", "application/octet-stream"); put("so", "application/octet-stream"); put("dll", "application/octet-stream"); put("dmg", "application/octet-stream"); put("oda", "application/oda"); put("ogg", "application/ogg"); put("pdf", "application/pdf"); put("ai", "application/postscript"); put("eps", "application/postscript"); put("ps", "application/postscript"); put("rdf", "application/rdf+xml"); put("smi", "application/smil"); put("smil", "application/smil"); put("gram", "application/srgs"); put("grxml", "application/srgs+xml"); put("mif", "application/vnd.mif"); put("xls", "application/vnd.ms-excel"); put("ppt", "application/vnd.ms-powerpoint"); put("rm", "application/vnd.rn-realmedia"); put("bcpio", "application/x-bcpio"); put("vcd", "application/x-cdlink"); put("pgn", "application/x-chess-pgn"); put("cpio", "application/x-cpio"); put("csh", "application/x-csh"); put("dcr", "application/x-director"); put("dir", "application/x-director"); put("dxr", "application/x-director"); put("dvi", "application/x-dvi"); put("spl", "application/x-futuresplash"); put("gtar", "application/x-gtar"); put("hdf", "application/x-hdf"); put("js", "application/x-javascript"); put("skp", "application/x-koan"); put("skd", "application/x-koan"); put("skt", "application/x-koan"); put("skm", "application/x-koan"); put("latex", "application/x-latex"); put("nc", "application/x-netcdf"); put("cdf", "application/x-netcdf"); put("ogg", "application/x-ogg"); put("sh", "application/x-sh"); put("shar", "application/x-shar"); put("swf", "application/x-shockwave-flash"); put("sit", "application/x-stuffit"); put("sv4cpio", "application/x-sv4cpio"); put("sv4crc", "application/x-sv4crc"); put("tar", "application/x-tar"); put("tcl", "application/x-tcl"); put("tex", "application/x-tex"); put("texinfo", "application/x-texinfo"); put("texi", "application/x-texinfo"); put("t", "application/x-troff"); put("tr", "application/x-troff"); put("roff", "application/x-troff"); put("man", "application/x-troff-man"); put("me", "application/x-troff-me"); put("ms", "application/x-troff-ms"); put("ustar", "application/x-ustar"); put("src", "application/x-wais-source"); put("xhtml", "application/xhtml+xml"); put("xht", "application/xhtml+xml"); put("xslt", "application/xslt+xml"); put("xml", "application/xml"); put("xsl", "application/xml"); put("dtd", "application/xml-dtd"); put("zip", "application/zip"); put("au", "audio/basic"); put("snd", "audio/basic"); put("mid", "audio/midi"); put("midi", "audio/midi"); put("kar", "audio/midi"); put("mpga", "audio/mpeg"); put("mp2", "audio/mpeg"); put("mp3", "audio/mpeg"); put("aif", "audio/x-aiff"); put("aiff", "audio/x-aiff"); put("aifc", "audio/x-aiff"); put("m3u", "audio/x-mpegurl"); put("ram", "audio/x-pn-realaudio"); put("ra", "audio/x-pn-realaudio"); put("wav", "audio/x-wav"); put("pdb", "chemical/x-pdb"); put("xyz", "chemical/x-xyz"); put("bmp", "image/bmp"); put("cgm", "image/cgm"); put("gif", "image/gif"); put("ief", "image/ief"); put("jpeg", "image/jpeg"); put("jpg", "image/jpeg"); put("jpe", "image/jpeg"); put("png", "image/png"); put("svg", "image/svg+xml"); put("tiff", "image/tiff"); put("tif", "image/tiff"); put("djvu", "image/vnd.djvu"); put("djv", "image/vnd.djvu"); put("wbmp", "image/vnd.wap.wbmp"); put("ras", "image/x-cmu-raster"); put("ico", "image/x-icon"); put("pnm", "image/x-portable-anymap"); put("pbm", "image/x-portable-bitmap"); put("pgm", "image/x-portable-graymap"); put("ppm", "image/x-portable-pixmap"); put("rgb", "image/x-rgb"); put("xbm", "image/x-xbitmap"); put("xpm", "image/x-xpixmap"); put("xwd", "image/x-xwindowdump"); put("igs", "model/iges"); put("iges", "model/iges"); put("msh", "model/mesh"); put("mesh", "model/mesh"); put("silo", "model/mesh"); put("wrl", "model/vrml"); put("vrml", "model/vrml"); put("ics", "text/calendar"); put("ifb", "text/calendar"); put("css", "text/css"); put("html", "text/html"); put("htm", "text/html"); put("asc", "text/plain"); put("txt", "text/plain"); put("rtx", "text/richtext"); put("rtf", "text/rtf"); put("sgml", "text/sgml"); put("sgm", "text/sgml"); put("tsv", "text/tab-separated-values"); put("wml", "text/vnd.wap.wml"); put("wmls", "text/vnd.wap.wmlscript"); put("etx", "text/x-setext"); put("htc", "text/x-component"); put("mpeg", "video/mpeg"); put("mpg", "video/mpeg"); put("mpe", "video/mpeg"); put("qt", "video/quicktime"); put("mov", "video/quicktime"); put("mxu", "video/vnd.mpegurl"); put("m4u", "video/vnd.mpegurl"); put("avi", "video/x-msvideo"); put("movie", "video/x-sgi-movie"); put("ice", "x-conference/x-cooltalk"); }}; public static String getMimeType(String extension) { return DEFAULT_MIME_MAPPING.get(extension); } } public static abstract class Resources { public static final String PARAM_TABLE_RESOURCES = "TABLE_RESOURCES"; private static final String DEFAULT_TABLE_TASK = "Resources"; public static String getTableResources() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_RESOURCES, DEFAULT_TABLE_TASK); } return DEFAULT_TABLE_TASK; } } public static abstract class Scheduler { public static final String PARAM_TABLE_TASK = "TABLE_TASK"; public static final String PARAM_SEQUENCE_TASK = "SEQUENCE_TASK"; public static final String PARAM_TABLE_TASKOPTION = "TABLE_TASKOPTION"; public static final String PARAM_TASKOPTION_NAME_MAXIMUM_LENGTH = "TASKOPTION_NAME_MAXIMUM_LENGTH"; public static final String PARAM_TASKOPTION_VALUE_MAXIMUM_LENGTH = "TASKOPTION_VALUE_MAXIMUM_LENGTH"; public static final String PARAM_TASK_TYPE_MAXIMUM_LENGTH = "TASK_TYPE_MAXIMUM_LENGTH"; public static final String PARAM_TASK_FREQUENCY_MAXIMUM_LENGTH = "TASK_FREQUENCY_MAXIMUM_LENGTH"; private static final String DEFAULT_TABLE_TASK = "SchedTask"; private static final String DEFAULT_SEQUENCE_TASK = "SEQ_SCHEDTASK"; private static final String DEFAULT_TABLE_TASKOPTION = "SchedTaskoption"; private static final int DEFAULT_TASKOPTION_NAME_MAXIMUM_LENGTH = 255; private static final int DEFAULT_TASKOPTION_VALUE_MAXIMUM_LENGTH = 255; private static final int DEFAULT_TASK_TYPE_MAXIMUM_LENGTH = 255; private static final int DEFAULT_TASK_FREQUENCY_MAXIMUM_LENGTH = 255; public static int getTaskTypeMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_TASK_TYPE_MAXIMUM_LENGTH, DEFAULT_TASK_TYPE_MAXIMUM_LENGTH); } return DEFAULT_TASK_TYPE_MAXIMUM_LENGTH; } public static int getTaskFrequencyMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_TASK_FREQUENCY_MAXIMUM_LENGTH, DEFAULT_TASK_FREQUENCY_MAXIMUM_LENGTH); } return DEFAULT_TASK_FREQUENCY_MAXIMUM_LENGTH; } public static int getTaskoptionValueMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_TASKOPTION_VALUE_MAXIMUM_LENGTH, DEFAULT_TASKOPTION_VALUE_MAXIMUM_LENGTH); } return DEFAULT_TASKOPTION_VALUE_MAXIMUM_LENGTH; } public static int getTaskoptionNameMaximumLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_TASKOPTION_NAME_MAXIMUM_LENGTH, DEFAULT_TASKOPTION_NAME_MAXIMUM_LENGTH); } return DEFAULT_TASKOPTION_NAME_MAXIMUM_LENGTH; } public static String getTableTask() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_TASK, DEFAULT_TABLE_TASK); } return DEFAULT_TABLE_TASK; } public static String getSequenceTask() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_SEQUENCE_TASK, DEFAULT_SEQUENCE_TASK); } return DEFAULT_SEQUENCE_TASK; } public static String getTableTaskoption() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_TABLE_TASKOPTION, DEFAULT_TABLE_TASKOPTION); } return DEFAULT_TABLE_TASKOPTION; } } public static abstract class Swing { public static final String PARAM_ICON_CONFIRM_PATH = "ICON_CONFIRM_PATH"; public static final String PARAM_ICON_ERROR_PATH = "ICON_ERROR_PATH"; public static final String PARAM_ICON_INFO_PATH = "ICON_INFO_PATH"; private static final String DEFAULT_ICON_CONFIRM_PATH = "icons/confirm.gif"; private static final String DEFAULT_ICON_ERROR_PATH = "icons/error.gif"; private static final String DEFAULT_ICON_INFO_PATH = "icons/info.gif"; public static String getIconConfirmPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_ICON_CONFIRM_PATH, DEFAULT_ICON_CONFIRM_PATH); } return DEFAULT_ICON_CONFIRM_PATH; } public static String getIconErrorPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_ICON_ERROR_PATH, DEFAULT_ICON_ERROR_PATH); } return DEFAULT_ICON_ERROR_PATH; } public static String getIconInfoPath() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_ICON_INFO_PATH, DEFAULT_ICON_INFO_PATH); } return DEFAULT_ICON_INFO_PATH; } } // public static abstract class Template // { // public static final String PARAM_TEMPLATE_AUTO_RELOAD = "TEMPLATE_AUTO_RELOAD"; // public static final String PARAM_TEMPLATE_GENERATION_PATH = "TEMPLATE_GENERATION_PATH"; // public static final String PARAM_TEMPLATE_GENERATE_CLASSES = "TEMPLATE_GENERATE_CLASSES"; // public static final String PARAM_TEMPLATE_DEFAULT_ENCODING = "TEMPLATE_DEFAULT_ENCODING"; // // public static final String PREFIX_TEMPLATE_DEFAULT_RESOURCEBUNDLES = "TEMPLATE_DEFAULT_RESOURCEBUNDLES_"; // // private static String sGenerationPath = null; // private static String sDefaultEncoding = null; // private static HashMap<String, Collection<String>> sDefaultResourcebundles = null; // private static boolean sGenerateClasses = false; // // private static final boolean DEFAULT_TEMPLATE_AUTO_RELOAD = true; // // public static boolean getAutoReload() // { // if (Config.hasRepInstance()) // { // return Config.getRepInstance().getBool(PARAM_TEMPLATE_AUTO_RELOAD, DEFAULT_TEMPLATE_AUTO_RELOAD); // } // // return DEFAULT_TEMPLATE_AUTO_RELOAD; // } // // public static String getGenerationPath() // { // String generation_path = null; // // if (Config.hasRepInstance()) // { // generation_path = Config.getRepInstance().getString(PARAM_TEMPLATE_GENERATION_PATH, sGenerationPath); // } // if (null == generation_path) // { // generation_path = sGenerationPath; // } // if (null == generation_path) // { // return RifeConfig.Global.getTempPath()+File.separator+"rife_templates"; // } // // generation_path += File.separator; // // return generation_path; // } // // public static synchronized void setGenerationPath(String path) // { // if (null == path) throw new IllegalArgumentException("path can't be null."); // if (0 == path.length()) throw new IllegalArgumentException("path can't be empty."); // // if (Config.hasRepInstance()) // { // Config.getRepInstance().setParameter(PARAM_TEMPLATE_GENERATION_PATH, path); // } // else // { // sGenerationPath = path; // } // } // // public static boolean getGenerateClasses() // { // if (Config.hasRepInstance() && // Config.getRepInstance().hasParameter(PARAM_TEMPLATE_GENERATE_CLASSES)) // { // return Config.getRepInstance().getBool(PARAM_TEMPLATE_GENERATE_CLASSES, sGenerateClasses); // } // // return sGenerateClasses; // } // // public static synchronized void setGenerateClasses(boolean generate) // { // if (Config.hasRepInstance()) // { // Config.getRepInstance().setParameter(PARAM_TEMPLATE_GENERATE_CLASSES, generate); // } // else // { // sGenerateClasses = generate; // } // } // // public static String getDefaultEncoding() // { // if (Config.hasRepInstance()) // { // return Config.getRepInstance().getString(PARAM_TEMPLATE_DEFAULT_ENCODING, sDefaultEncoding); // } // // return sDefaultEncoding; // } // // public static synchronized void setDefaultEncoding(String encoding) // { // if (null == encoding) throw new IllegalArgumentException("encoding can't be null."); // if (0 == encoding.length()) throw new IllegalArgumentException("encoding can't be empty."); // // if (Config.hasRepInstance()) // { // Config.getRepInstance().setParameter(PARAM_TEMPLATE_DEFAULT_ENCODING, encoding); // } // else // { // sDefaultEncoding = encoding; // } // } // // public static Collection<String> getDefaultResourcebundles(TemplateFactory factory) // { // Collection<String> result = null; // // if (Config.hasRepInstance()) // { // result = Config.getRepInstance().getStringItems(PREFIX_TEMPLATE_DEFAULT_RESOURCEBUNDLES+factory.getIdentifierUppercase()); // } // // if (null == result && // sDefaultResourcebundles != null) // { // result = sDefaultResourcebundles.get(factory.getIdentifierUppercase()); // } // // return result; // } // // public static String getDefaultResourcebundle(TemplateFactory factory) // { // Collection<String> result = getDefaultResourcebundles(factory); // if (null == result || 0 == result.size()) // { // return null; // } // return result.iterator().next(); // } // // public static synchronized void setDefaultResourcebundles(TemplateFactory factory, Collection<String> bundles) // { // if (Config.hasRepInstance()) // { // String param = PREFIX_TEMPLATE_DEFAULT_RESOURCEBUNDLES+factory.getIdentifierUppercase(); // // Config.getRepInstance().removeList(param); // if (bundles != null) // { // for (String bundle : bundles) // { // Config.getRepInstance().addListItem(param, bundle); // } // } // } // else // { // if (null == sDefaultResourcebundles) // { // sDefaultResourcebundles = new HashMap<String, Collection<String>>(); // } // // sDefaultResourcebundles.put(factory.getIdentifierUppercase(), bundles); // } // } // } public static abstract class Tools { public static final String PARAM_L10N_RESOURCEBUNDLE_AUTO_RELOAD = "L10N_RESOURCEBUNDLE_AUTO_RELOAD"; public static final String PARAM_L10N_DEFAULT_RESOURCEBUNDLE = "L10N_DEFAULT_RESOURCEBUNDLE"; public static final String PARAM_L10N_DEFAULT_LANGUAGE = "L10N_DEFAULT_LANGUAGE"; public static final String PARAM_L10N_DEFAULT_COUNTRY = "L10N_DEFAULT_COUNTRY"; public static final String PARAM_L10N_DEFAULT_TIMEZONE = "L10N_DEFAULT_TIMEZONE"; public static final String PARAM_L10N_DEFAULT_SHORT_DATEFORMAT = "L10N_DEFAULT_SHORT_DATEFORMAT"; public static final String PARAM_L10N_DEFAULT_LONG_DATEFORMAT = "L10N_DEFAULT_LONG_DATEFORMAT"; public static final String PARAM_L10N_DEFAULT_INPUT_DATEFORMAT = "L10N_DEFAULT_INPUT_DATEFORMAT"; public static final String PARAM_MAX_VISUAL_URL_LENGTH = "MAX_VISUAL_URL_LENGTH"; private static final String DEFAULT_LANGUAGE = "en"; private static final int DEFAULT_MAX_VISUAL_URL_LENGTH = 70; private static final boolean DEFAULT_RESOURCEBUNDLE_AUTO_RELOAD = true; private static String sDefaultResourcebundle = null; private static String sDefaultLanguage = DEFAULT_LANGUAGE; private static String sDefaultCountry = null; private static TimeZone sDefaultTimeZone = null; public static boolean getResourcebundleAutoReload() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_L10N_RESOURCEBUNDLE_AUTO_RELOAD, DEFAULT_RESOURCEBUNDLE_AUTO_RELOAD); } return DEFAULT_RESOURCEBUNDLE_AUTO_RELOAD; } public static String getDefaultResourceBundle() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_L10N_DEFAULT_RESOURCEBUNDLE, sDefaultResourcebundle); } return sDefaultResourcebundle; } public static synchronized void setDefaultResourceBundle(String name) { if (name != null && 0 == name.length()) { throw new IllegalArgumentException("name can't be empty."); } if (Config.hasRepInstance()) { if (null == name) { Config.getRepInstance().removeParameter(PARAM_L10N_DEFAULT_RESOURCEBUNDLE); } else { Config.getRepInstance().setParameter(PARAM_L10N_DEFAULT_RESOURCEBUNDLE, name); } } else { sDefaultResourcebundle = name; } } public static String getDefaultLanguage() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_L10N_DEFAULT_LANGUAGE, sDefaultLanguage); } return sDefaultLanguage; } public static synchronized void setDefaultLanguage(String abbreviation) { if (abbreviation != null && 0 == abbreviation.length()) { throw new IllegalArgumentException("abbreviation can't be empty."); } if (Config.hasRepInstance()) { if (null == abbreviation) { Config.getRepInstance().removeParameter(PARAM_L10N_DEFAULT_LANGUAGE); } else { Config.getRepInstance().setParameter(PARAM_L10N_DEFAULT_LANGUAGE, abbreviation); } } else { if (null == abbreviation) { sDefaultLanguage = DEFAULT_LANGUAGE; } else { sDefaultLanguage = abbreviation; } } } public static String getDefaultCountry() { if (Config.hasRepInstance()) { return Config.getRepInstance().getString(PARAM_L10N_DEFAULT_COUNTRY, sDefaultCountry); } return sDefaultCountry; } public static synchronized void setDefaultCountry(String countryCode) { if (null == countryCode) { throw new IllegalArgumentException("countryCode can't be null."); } if (0 == countryCode.length()) { throw new IllegalArgumentException("countryCode can't be empty."); } if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_L10N_DEFAULT_COUNTRY, countryCode); } else { sDefaultCountry = countryCode; } } public static TimeZone getDefaultTimeZone() { TimeZone result = sDefaultTimeZone; if (null == result && Config.hasRepInstance()) { String timezoneid = Config.getRepInstance().getString(PARAM_L10N_DEFAULT_TIMEZONE); if (timezoneid != null) { result = TimeZone.getTimeZone(timezoneid); } } if (null == result) { result = TimeZone.getDefault(); } return result; } public static synchronized void setDefaultTimeZone(TimeZone timeZone) { if (Config.hasRepInstance()) { Config.getRepInstance().setParameter(PARAM_L10N_DEFAULT_TIMEZONE, timeZone.getID()); } else { sDefaultTimeZone = timeZone; } } public static DateFormat getDefaultShortDateFormat() { if (Config.hasRepInstance()) { Config config = Config.getRepInstance(); if (config.hasParameter(PARAM_L10N_DEFAULT_SHORT_DATEFORMAT)) { SimpleDateFormat sf; try { sf = new SimpleDateFormat(config.getString(PARAM_L10N_DEFAULT_SHORT_DATEFORMAT), Localization.getLocale()); sf.setTimeZone(RifeConfig.Tools.getDefaultTimeZone()); } catch (IllegalArgumentException e) { throw new DateFormatInitializationException(e.getMessage()); } return sf; } } if (0 != getDefaultLanguage().compareToIgnoreCase(DEFAULT_LANGUAGE)) { return DateFormat.getDateInstance(DateFormat.SHORT, Localization.getLocale()); } return DateFormat.getDateInstance(DateFormat.SHORT, Locale.ENGLISH); } public static DateFormat getDefaultLongDateFormat() { if (Config.hasRepInstance()) { Config config = Config.getRepInstance(); if (config.hasParameter(PARAM_L10N_DEFAULT_LONG_DATEFORMAT)) { SimpleDateFormat sf; try { sf = new SimpleDateFormat(config.getString(PARAM_L10N_DEFAULT_LONG_DATEFORMAT), Localization.getLocale()); sf.setTimeZone(RifeConfig.Tools.getDefaultTimeZone()); } catch (IllegalArgumentException e) { throw new DateFormatInitializationException(e.getMessage()); } return sf; } } if (0 != getDefaultLanguage().compareToIgnoreCase(DEFAULT_LANGUAGE)) { return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Localization.getLocale()); } return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.ENGLISH); } public static DateFormat getDefaultInputDateFormat() { if (Config.hasRepInstance()) { Config config = Config.getRepInstance(); if (config.hasParameter(PARAM_L10N_DEFAULT_INPUT_DATEFORMAT)) { SimpleDateFormat sf; try { sf = new SimpleDateFormat(config.getString(PARAM_L10N_DEFAULT_INPUT_DATEFORMAT), Localization.getLocale()); sf.setTimeZone(RifeConfig.Tools.getDefaultTimeZone()); } catch (IllegalArgumentException e) { throw new DateFormatInitializationException(e.getMessage()); } return sf; } } SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); sf.setTimeZone(RifeConfig.Tools.getDefaultTimeZone()); return sf; } public static int getMaxVisualUrlLength() { if (Config.hasRepInstance()) { return Config.getRepInstance().getInt(PARAM_MAX_VISUAL_URL_LENGTH, DEFAULT_MAX_VISUAL_URL_LENGTH); } return DEFAULT_MAX_VISUAL_URL_LENGTH; } } public static abstract class Xml { public static final String PARAM_XML_VALIDATION = "XML_VALIDATION"; private static final boolean DEFAULT_XML_VALIDATION = true; public static boolean getXmlValidation() { if (Config.hasRepInstance()) { return Config.getRepInstance().getBool(PARAM_XML_VALIDATION, DEFAULT_XML_VALIDATION); } return DEFAULT_XML_VALIDATION; } } }