package railo.runtime.config; import java.io.IOException; import java.io.PrintWriter; import java.net.URL; import java.util.Locale; import java.util.Map; import java.util.TimeZone; import railo.commons.io.log.LogAndSource; import railo.commons.io.res.Resource; import railo.commons.io.res.ResourceProvider; import railo.runtime.CFMLFactory; import railo.runtime.Mapping; import railo.runtime.PageContext; import railo.runtime.PageSource; import railo.runtime.cache.CacheConnection; import railo.runtime.cfx.CFXTagPool; import railo.runtime.db.DataSource; import railo.runtime.dump.DumpWriter; import railo.runtime.engine.ThreadQueue; import railo.runtime.exp.PageException; import railo.runtime.extension.Extension; import railo.runtime.extension.ExtensionProvider; import railo.runtime.listener.ApplicationListener; import railo.runtime.monitor.IntervallMonitor; import railo.runtime.monitor.RequestMonitor; import railo.runtime.net.mail.Server; import railo.runtime.net.proxy.ProxyData; import railo.runtime.rest.RestSettings; import railo.runtime.schedule.Scheduler; import railo.runtime.search.SearchEngine; import railo.runtime.security.SecurityManager; import railo.runtime.spooler.SpoolerEngine; import railo.runtime.type.Struct; import railo.runtime.type.dt.TimeSpan; /** * interface for Config Object */ public interface Config { /** * Define a strict scope cascading */ public static final short SCOPE_STRICT = 0; /** * Define a small scope cascading */ public static final short SCOPE_SMALL = 1; /** * Define a standart scope cascading (like other cf versions) */ public static final short SCOPE_STANDARD = 2; /** * Field <code>CLIENT_SCOPE_TYPE_COOKIE</code> */ public static final short CLIENT_SCOPE_TYPE_COOKIE = 0; /** * Field <code>CLIENT_SCOPE_TYPE_FILE</code> */ public static final short CLIENT_SCOPE_TYPE_FILE = 1; /** * Field <code>CLIENT_SCOPE_TYPE_DB</code> */ public static final short CLIENT_SCOPE_TYPE_DB = 2; /** * Field <code>SESSION_TYPE_CFML</code> */ public static final short SESSION_TYPE_CFML = 0; /** * Field <code>SESSION_TYPE_J2EE</code> */ public static final short SESSION_TYPE_J2EE = 1; /** * Field <code>RECOMPILE_NEVER</code> */ public static final short RECOMPILE_NEVER = 0; /** * Field <code>RECOMPILE_AT_STARTUP</code> */ public static final short RECOMPILE_AFTER_STARTUP = 1; /** * Field <code>RECOMPILE_ALWAYS</code> */ public static final short RECOMPILE_ALWAYS = 2; public static final short INSPECT_ALWAYS = 0; public static final short INSPECT_ONCE = 1; public static final short INSPECT_NEVER = 2; // Hibernate Extension has hardcoded this 4, do not change!!!! /*public static final int CUSTOM_TAG_MODE_NONE = 0; public static final int CUSTOM_TAG_MODE_CLASSIC = 1; public static final int CUSTOM_TAG_MODE_MODERN = 2; public static final int CUSTOM_TAG_MODE_CLASSIC_MODERN = 4; public static final int CUSTOM_TAG_MODE_MODERN_CLASSIC = 8; */ public static final int CACHE_DEFAULT_NONE = 0; public static final int CACHE_DEFAULT_OBJECT = 1; public static final int CACHE_DEFAULT_TEMPLATE = 2; public static final int CACHE_DEFAULT_QUERY = 4; public static final int CACHE_DEFAULT_RESOURCE = 8; public static final int CACHE_DEFAULT_FUNCTION = 16; public short getInspectTemplate(); public String getDefaultDataSource(); /** * return how railo cascade scopes * @return type of cascading */ public abstract short getScopeCascadingType(); /** * return cfml extesnion * @return cfml extension */ public abstract String[] getCFMLExtensions(); public abstract String getCFCExtension(); /** * return the mapping to custom tag directory * @return custom tag directory */ public abstract Mapping[] getCustomTagMappings(); /** * return if it is allowed to implizid query call, call a query member witot define name of the query. * @return is allowed */ public abstract boolean allowImplicidQueryCall(); /**e merged * return if url and form scope will b * @return merge or not */ public abstract boolean mergeFormAndURL(); /** * @return Returns the application Timeout. */ public abstract TimeSpan getApplicationTimeout(); /** * @return Returns the session Timeout. */ public abstract TimeSpan getSessionTimeout(); /** * @return Returns the client Timeout. */ public TimeSpan getClientTimeout(); /** * @return Returns the request Timeout. */ public abstract TimeSpan getRequestTimeout(); /** * @return Returns the clientCookies. */ public abstract boolean isClientCookies(); /** * @return Returns the clientManagement. */ public abstract boolean isClientManagement(); /** * @return Returns the domainCookies. */ public abstract boolean isDomainCookies(); /** * @return Returns the sessionManagement. */ public abstract boolean isSessionManagement(); /** * @return Returns the spoolEnable. */ public abstract boolean isMailSpoolEnable(); /** * @return Returns the mailTimeout. */ public abstract int getMailTimeout(); /** * @return preserve single quotes in cfquery tag or not */ public abstract boolean getPSQL(); /** * @return Returns the locale. */ public abstract Locale getLocale(); /** * return if debug output will be generated * @return debug or not */ public abstract boolean debug(); /** * return the temp directory * @return temp directory */ public abstract Resource getTempDirectory(); /** * @return Returns the spoolInterval. */ public abstract int getMailSpoolInterval(); /** * @return returns the time zone for this */ public abstract TimeZone getTimeZone(); /** * @return returns the offset from the timeserver to local time */ public abstract long getTimeServerOffset(); /** * @return return if a password is set */ public abstract boolean hasPassword(); /** * @param password * @return return if a password is set */ public abstract boolean passwordEqual(String password); /** * @return return if a password is set */ public abstract boolean hasServerPassword(); /** * @return Returns the mappings. */ public abstract Mapping[] getMappings(); /** * @return Returns the configDir. */ public abstract Resource getConfigDir(); /** * @return Returns the configFile. */ public abstract Resource getConfigFile(); /** * @return Returns the loadTime. */ public abstract long getLoadTime(); /** * @return Returns the baseComponent. */ public abstract String getBaseComponentTemplate(); /** * @return returns the client type */ public abstract short getClientType(); /** * @return Returns the componentDataMemberDefaultAccess. */ public abstract int getComponentDataMemberDefaultAccess(); /** * @return Returns the timeServer. */ public abstract String getTimeServer(); /** * @return Returns the componentDump. */ public abstract String getComponentDumpTemplate(); /** * @return id of the config */ public abstract String getId(); /** * @return Returns the debug Template. * @deprecated use instead <code>getDebugEntry(ip, defaultValue)</code> */ public abstract String getDebugTemplate(); /** * @return Returns the error Template for given status code. */ public abstract String getErrorTemplate(int statusCode); /** * @return Returns the sessionType. */ public abstract short getSessionType(); /** * @return returns the charset for the response and request */ public abstract String getWebCharset(); // FUTURE return Charset /** * @return returns the charset used to read cfml files */ public abstract String getTemplateCharset(); // FUTURE return Charset /** * @return returns the charset used to read and write resources */ public abstract String getResourceCharset(); // FUTURE return Charset /** * @return returns the default encoding for mail */ public String getMailDefaultEncoding(); // FUTURE return Charset? /** * @return returns update type (auto or manual) */ public abstract String getUpdateType(); /** * @return returns URL for update */ public abstract URL getUpdateLocation(); /** * return directory, where railo deploy translated cfml classes (java and class files) * @return deploy directory */ public abstract Resource getDeployDirectory(); /** * @return Returns the rootDir. */ public abstract Resource getRootDirectory(); /** * @return Returns the accessor. */ public abstract SecurityManager getSecurityManager(); /** * @return Returns the cfxTagPool. * @throws PageException */ public abstract CFXTagPool getCFXTagPool() throws PageException; /** * @return returns the application logger */ public abstract LogAndSource getApplicationLogger(); /** * @return returns the exception logger */ public abstract LogAndSource getExceptionLogger(); /** * @return returns the trace logger */ public abstract LogAndSource getTraceLogger(); /** * @param password * @return ConfigServer * @throws PageException */ public abstract ConfigServer getConfigServer(String password) throws PageException; /** * @return Returns the mailLogger. */ public abstract LogAndSource getMailLogger(); /** * @return Returns the request timeout Directory. */ public LogAndSource getRequestTimeoutLogger(); /** * @return returns schedule logger */ public LogAndSource getScheduleLogger(); /** * reload the time offset to a time server */ public void reloadTimeServerOffset(); /** * reset config */ public void reset(); /** * @return return the search Storage */ public SearchEngine getSearchEngine(); /** * @return return the Scheduler */ public Scheduler getScheduler(); /** * @return return all defined Mail Servers */ public Server[] getMailServers(); /** * return the compile type of this context */ public short getCompileType(); /** * return the all datasources */ public DataSource[] getDataSources(); /** * @param path get a resource that match this path * @return resource matching path */ public Resource getResource(String path); /** * return current application listener * @return application listener */ public ApplicationListener getApplicationListener(); /** * @return the scriptProtect */ public int getScriptProtect(); /** * return default proxy setting password * @return the password for proxy */ public ProxyData getProxyData(); /** * return if proxy is enabled or not * @return is proxy enabled */ public boolean isProxyEnableFor(String host); /** * @return the triggerComponentDataMember */ public boolean getTriggerComponentDataMember(); public RestSettings getRestSetting(); public abstract Resource getClientScopeDir(); public abstract long getClientScopeDirSize(); public abstract ClassLoader getRPCClassLoader(boolean reload) throws IOException; public Resource getCacheDir(); public long getCacheDirSize(); public Map<String,CacheConnection> getCacheConnections(); /** * get default cache connection for a specific type * @param type default type, one of the following (CACHE_DEFAULT_NONE, CACHE_DEFAULT_OBJECT, CACHE_DEFAULT_TEMPLATE, CACHE_DEFAULT_QUERY, CACHE_DEFAULT_RESOURCE) * @return matching Cache Connection */ public CacheConnection getCacheDefaultConnection(int type); /** * get name of a default cache connection for a specific type * @param type default type, one of the following (CACHE_DEFAULT_NONE, CACHE_DEFAULT_OBJECT, CACHE_DEFAULT_TEMPLATE, CACHE_DEFAULT_QUERY, CACHE_DEFAULT_RESOURCE) * @return name of matching Cache Connection */ public String getCacheDefaultConnectionName(int type); /** * returns the default DumpWriter * @param defaultType * @return default DumpWriter */ public abstract DumpWriter getDefaultDumpWriter(int defaultType); /** * returns the DumpWriter matching key * @param key key for DumpWriter * @param defaultType * @return matching DumpWriter * @throws PageException if there is no DumpWriter for this key */ public abstract DumpWriter getDumpWriter(String key,int defaultType) throws PageException; /** * returns the DumpWriter matching key * @param key key for DumpWriter * @return matching DumpWriter * @deprecated use instead <code>getDumpWriter(String key,int defaultType)</code> * @throws PageException if there is no DumpWriter for this key */ public abstract DumpWriter getDumpWriter(String key) throws PageException; /** * define if components has a "shadow" in the component variables scope or not. * @return */ public abstract boolean useComponentShadow(); /* * * return a database connection hold inside by a datasource definition * @param datasource definiti0on of the datasource * @param user username to connect * @param pass password to connect * @return datasource connnection * @throws PageException */ //public DatasourceConnection getConnection(String datasource, String user, String pass) throws PageException; /* * * @return returns the ConnectionPool */ public Mapping[] getComponentMappings(); public abstract boolean doCustomTagDeepSearch(); /** * @return returns the error print writer stream */ public abstract PrintWriter getErrWriter(); /** * @return returns the out print writer stream */ public abstract PrintWriter getOutWriter(); /** * define if railo search in local directory for custom tags or not * @return search in local dir? */ public abstract boolean doLocalCustomTag(); public String[] getCustomTagExtensions(); /** * @return if error status code will be returned or not */ public boolean getErrorStatusCode(); public abstract int getLocalMode(); /** * @return return the class defined for the cluster scope */ public Class getClusterClass(); /** * @return classloader of ths context */ public ClassLoader getClassLoader(); // FUTURE @deprected use instead PageContext.getClassLoader(Resource[] reses); public ClassLoader getClassLoader(Resource[] reses) throws IOException; public Resource getExtensionDirectory(); public ExtensionProvider[] getExtensionProviders(); public Extension[] getExtensions(); public PageSource getBaseComponentPageSource(); public boolean allowRealPath(); public Struct getConstants(); public DataSource getDataSource(String datasource) throws PageException; public DataSource getDataSource(String datasource, DataSource defaultValue); public Map getDataSourcesAsMap(); public String getDefaultEncoding(); public ResourceProvider getDefaultResourceProvider(); public CFMLFactory getFactory(); public boolean isExtensionEnabled(); public Resource getFldFile(); /** * @return the tldFile */ public Resource getTldFile(); /** * get PageSource of the first Mapping that match the given criteria * @param mappings per application mappings * @param realPath path to get PageSource for * @param onlyTopLevel checks only toplevel mappings * @deprecated use instead getPageSources or getPageSourceExisting */ public PageSource getPageSource(Mapping[] mappings, String realPath,boolean onlyTopLevel); /** * return existing PageSource that match the given criteria, if there is no PageSource null is returned. * @param pc current PageContext * @param mappings per application mappings * @param realPath path to get PageSource for * @param onlyTopLevel checks only toplevel mappings * @param useSpecialMappings invoke special mappings like "mapping-tag" or "mapping-customtag" * @param useDefaultMapping also invoke the always existing default mapping "/" */ public PageSource getPageSourceExisting(PageContext pc,Mapping[] mappings, String realPath,boolean onlyTopLevel,boolean useSpecialMappings, boolean useDefaultMapping, boolean onlyPhysicalExisting); /** * get all PageSources that match the given criteria * @param pc current PageContext * @param mappings per application mappings * @param realPath path to get PageSource for * @param onlyTopLevel checks only toplevel mappings * @param useSpecialMappings invoke special mappings like "mapping-tag" or "mapping-customtag" * @param useDefaultMapping also invoke the always existing default mapping "/" */ public PageSource[] getPageSources(PageContext pc,Mapping[] mappings, String realPath,boolean onlyTopLevel,boolean useSpecialMappings, boolean useDefaultMapping); /** * get Resource of the first Mapping that match the given criteria * @param mappings per application mappings * @param realPath path to get PageSource for * @param onlyTopLevel checks only toplevel mappings * @deprecated use instead getPhysicalResources or getPhysicalResourceExisting */ public Resource getPhysical(Mapping[] mappings, String realPath, boolean alsoDefaultMapping); /** * get all Resources that match the given criteria * @param pc current PageContext * @param mappings per application mappings * @param realPath path to get PageSource for * @param onlyTopLevel checks only toplevel mappings * @param useSpecialMappings invoke special mappings like "mapping-tag" or "mapping-customtag" * @param useDefaultMapping also invoke the always existing default mapping "/" */ public Resource[] getPhysicalResources(PageContext pc,Mapping[] mappings, String realPath,boolean onlyTopLevel,boolean useSpecialMappings, boolean useDefaultMapping); /** * return existing Resource that match the given criteria, if there is no Resource null is returned. * @param pc current PageContext * @param mappings per application mappings * @param realPath path to get Resource for * @param onlyTopLevel checks only toplevel mappings * @param useSpecialMappings invoke special mappings like "mapping-tag" or "mapping-customtag" * @param useDefaultMapping also invoke the always existing default mapping "/" */ public Resource getPhysicalResourceExisting(PageContext pc,Mapping[] mappings, String realPath,boolean onlyTopLevel,boolean useSpecialMappings, boolean useDefaultMapping); public Resource getRemoteClientDirectory(); public LogAndSource getRemoteClientLog(); public RemoteClient[] getRemoteClients(); public SpoolerEngine getSpoolerEngine(); public ResourceProvider[] getResourceProviders(); public double getVersion(); public Resource getVideoDirectory(); //public String getVideoProviderLocation(); public boolean isShowVersion(); public boolean isSuppressWhitespace(); //public boolean isVideoAgreementAccepted(); public Struct getRemoteClientUsage(); public Class getAdminSyncClass(); public Class getVideoExecuterClass(); public ThreadQueue getThreadQueue(); public boolean getSessionCluster(); public boolean getClientCluster(); public Resource getSecurityDirectory(); public boolean isMonitoringEnabled(); public RequestMonitor[] getRequestMonitors(); public RequestMonitor getRequestMonitor(String name) throws PageException; public IntervallMonitor[] getIntervallMonitors(); public IntervallMonitor getIntervallMonitor(String name) throws PageException; /** * if free permspace gen is lower than 10000000 bytes, railo shrinks all classloaders * @param cs */ public void checkPermGenSpace(boolean check); public boolean allowRequestTimeout(); }