001    package railo.runtime.listener;
002    
003    import railo.commons.lang.StringUtil;
004    import railo.runtime.db.DataSource;
005    import railo.runtime.exp.ApplicationException;
006    import railo.runtime.type.util.ArrayUtil;
007    
008    public abstract class ApplicationContextSupport implements ApplicationContextPro {
009    
010            private static final long serialVersionUID = 1384678713928757744L;
011            
012            protected int idletimeout=1800;
013            protected String cookiedomain;
014            protected String applicationtoken;
015    
016            @Override
017            public void setSecuritySettings(String applicationtoken, String cookiedomain, int idletimeout) {
018                    this.applicationtoken=applicationtoken;
019                    this.cookiedomain=cookiedomain;
020                    this.idletimeout=idletimeout;
021                    
022            }
023            
024            @Override
025            public String getSecurityApplicationToken() {
026                    if(StringUtil.isEmpty(applicationtoken,true)) return getName();
027                    return applicationtoken;
028            }
029            
030            @Override
031            public String getSecurityCookieDomain() {
032                    if(StringUtil.isEmpty(applicationtoken,true)) return null;
033                    return cookiedomain;
034            }
035            
036            @Override
037            public int getSecurityIdleTimeout() {
038                    if(idletimeout<1) return 1800;
039                    return idletimeout;
040            }
041            
042    
043            
044            @Override
045            public DataSource getDataSource(String dataSourceName, DataSource defaultValue) {
046                    dataSourceName=dataSourceName.trim();
047                    DataSource[] sources = getDataSources();
048                    if(!ArrayUtil.isEmpty(sources)) {
049                            for(int i=0;i<sources.length;i++){
050                                    if(sources[i].getName().equalsIgnoreCase(dataSourceName))
051                                            return sources[i];
052                            }
053                    }
054                    return defaultValue;
055            }
056            
057            @Override
058            public DataSource getDataSource(String dataSourceName) throws ApplicationException {
059                    DataSource source = getDataSource(dataSourceName,null);
060                    if(source==null)
061                            throw new ApplicationException("there is no datasource with name ["+dataSourceName+"]");
062                    return source;
063            }
064    
065    }