001    package railo.runtime.listener;
002    
003    import railo.commons.io.res.Resource;
004    import railo.runtime.Mapping;
005    import railo.runtime.PageContext;
006    import railo.runtime.config.Config;
007    import railo.runtime.config.ConfigImpl;
008    import railo.runtime.exp.ApplicationException;
009    import railo.runtime.exp.PageException;
010    import railo.runtime.net.s3.Properties;
011    import railo.runtime.orm.ORMConfiguration;
012    import railo.runtime.type.Scope;
013    import railo.runtime.type.dt.TimeSpan;
014    import railo.runtime.util.ApplicationContext;
015    
016    /**
017     * 
018     */
019    public class ClassicApplicationContext extends ApplicationContextSupport {
020       
021    
022            private static final long serialVersionUID = 940663152793150953L;
023    
024            
025            
026    
027            private String name;
028        private boolean setClientCookies;
029        private boolean setDomainCookies;
030        private boolean setSessionManagement;
031        private boolean setClientManagement;
032        private TimeSpan sessionTimeout=null; 
033            private TimeSpan clientTimeout;
034        private TimeSpan applicationTimeout=null;
035        private int loginStorage=-1;
036        private String clientstorage;
037        private String sessionstorage;
038            private int scriptProtect;
039            private Mapping[] mappings;
040            private Mapping[] ctmappings;
041            private Mapping[] cmappings;
042            private boolean secureJson;
043            private String secureJsonPrefix="//";
044            private boolean isDefault;
045            private String defaultDataSource;
046            private boolean ormEnabled;
047            private String ormdatasource;
048            private ORMConfiguration config;
049            private Properties s3;
050            
051    
052            private int localMode;
053            private short sessionType;
054        private boolean sessionCluster;
055        private boolean clientCluster;
056    
057    
058    
059    
060            private Resource source;
061    
062        
063        /**
064         * constructor of the class
065         * @param config
066         */
067        public ClassicApplicationContext(Config config,String name,boolean isDefault, Resource source) {
068            ConfigImpl ci = ((ConfigImpl)config);
069            this.name=name;
070            setClientCookies=config.isClientCookies();
071            setDomainCookies=config.isDomainCookies();
072            setSessionManagement=config.isSessionManagement();
073            setClientManagement=config.isClientManagement();
074            sessionTimeout=config.getSessionTimeout();
075            clientTimeout=ci.getClientTimeout();
076            applicationTimeout=config.getApplicationTimeout();
077            loginStorage=Scope.SCOPE_COOKIE;
078            scriptProtect=config.getScriptProtect();
079            this.isDefault=isDefault;
080            this.defaultDataSource=ci.getDefaultDataSource();
081            this.localMode=config.getLocalMode();
082            this.sessionType=config.getSessionType();
083            this.sessionCluster=ci.getSessionCluster();
084            this.clientCluster=ci.getClientCluster();
085            this.source=source;
086        }
087        
088        /**
089         * Constructor of the class, only used by duplicate method
090         */
091        private ClassicApplicationContext() {
092            
093        }
094        
095    
096            public ApplicationContext duplicate() {
097                    ClassicApplicationContext dbl = new ClassicApplicationContext();
098                    
099                    
100                    dbl.name=name;
101                    dbl.setClientCookies=setClientCookies;
102                    dbl.setDomainCookies=setDomainCookies;
103                    dbl.setSessionManagement=setSessionManagement;
104                    dbl.setClientManagement=setClientManagement;
105                    dbl.sessionTimeout=sessionTimeout;
106                    dbl.clientTimeout=clientTimeout;
107                    dbl.applicationTimeout=applicationTimeout;
108                    dbl.loginStorage=loginStorage;
109                    dbl.clientstorage=clientstorage;
110                    dbl.sessionstorage=sessionstorage;
111                    dbl.scriptProtect=scriptProtect;
112                    dbl.mappings=mappings;
113                    dbl.ctmappings=ctmappings;
114                    dbl.cmappings=cmappings;
115                    dbl.secureJson=secureJson;
116                    dbl.secureJsonPrefix=secureJsonPrefix;
117                    dbl.isDefault=isDefault;
118                    dbl.defaultDataSource=defaultDataSource;
119                    dbl.applicationtoken=applicationtoken;
120                    dbl.cookiedomain=cookiedomain;
121                    dbl.idletimeout=idletimeout;
122                    dbl.localMode=localMode;
123                    dbl.sessionType=sessionType;
124                    
125                    dbl.ormEnabled=ormEnabled;
126                    dbl.config=config;
127                    dbl.ormdatasource=ormdatasource;
128                    dbl.sessionCluster=sessionCluster;
129                    dbl.clientCluster=clientCluster;
130                    dbl.source=source;
131                    
132                    return dbl;
133            }
134        
135        
136        /**
137         * @see railo.runtime.util.IApplicationContext#getApplicationTimeout()
138         */
139        public TimeSpan getApplicationTimeout() {
140            return applicationTimeout;
141        }
142        /**
143         * @param applicationTimeout The applicationTimeout to set.
144         */
145        public void setApplicationTimeout(TimeSpan applicationTimeout) {
146            this.applicationTimeout = applicationTimeout;
147        }
148        /**
149         * @see railo.runtime.util.IApplicationContext#getLoginStorage()
150         */
151        public int getLoginStorage() {
152            return loginStorage;
153        }
154        /**
155         * @param loginStorage The loginStorage to set.
156         */
157        public void setLoginStorage(int loginStorage) {
158            this.loginStorage = loginStorage;
159        }
160        
161        public void setLoginStorage(String strLoginStorage) throws ApplicationException {
162            setLoginStorage(AppListenerUtil.translateLoginStorage(strLoginStorage));
163        }
164        
165        
166        
167        /**
168         * @see railo.runtime.util.IApplicationContext#getFullName()
169         */
170        public String getName() {
171            return name;
172        }
173        /**
174         * @param name The name to set.
175         */
176        public void setName(String name) {
177            this.name = name;
178        }
179        /**
180         * @see railo.runtime.util.IApplicationContext#getSessionTimeout()
181         */
182        public TimeSpan getSessionTimeout() {
183            return sessionTimeout;
184        }
185        
186        /**
187         * @param sessionTimeout The sessionTimeout to set.
188         */
189        public void setSessionTimeout(TimeSpan sessionTimeout) {
190            this.sessionTimeout = sessionTimeout;
191        }
192    
193    
194        public TimeSpan getClientTimeout() {
195            return clientTimeout;
196        }
197        
198        /**
199         * @param sessionTimeout The sessionTimeout to set.
200         */
201        public void setClientTimeout(TimeSpan clientTimeout) {
202            this.clientTimeout = clientTimeout;
203        }
204        
205        /**
206         * @see railo.runtime.util.IApplicationContext#isSetClientCookies()
207         */
208        public boolean isSetClientCookies() {
209            return setClientCookies;
210        }
211        /**
212         * @param setClientCookies The setClientCookies to set.
213         */
214        public void setSetClientCookies(boolean setClientCookies) {
215            this.setClientCookies = setClientCookies;
216        }
217        /**
218         * @see railo.runtime.util.IApplicationContext#isSetClientManagement()
219         */
220        public boolean isSetClientManagement() {
221            return setClientManagement;
222        }
223        /**
224         * @param setClientManagement The setClientManagement to set.
225         */
226        public void setSetClientManagement(boolean setClientManagement) {
227            this.setClientManagement = setClientManagement;
228        }
229        /**
230         * @see railo.runtime.util.IApplicationContext#isSetDomainCookies()
231         */
232        public boolean isSetDomainCookies() {
233            return setDomainCookies;
234        }
235        /**
236         * @param setDomainCookies The setDomainCookies to set.
237         */
238        public void setSetDomainCookies(boolean setDomainCookies) {
239            this.setDomainCookies = setDomainCookies;
240        }
241        /**
242         * @see railo.runtime.util.IApplicationContext#isSetSessionManagement()
243         */
244        public boolean isSetSessionManagement() {
245            return setSessionManagement;
246        }
247        /**
248         * @param setSessionManagement The setSessionManagement to set.
249         */
250        public void setSetSessionManagement(boolean setSessionManagement) {
251            this.setSessionManagement = setSessionManagement;
252        }
253        /**
254         * @see railo.runtime.util.IApplicationContext#getClientstorage()
255         */
256        public String getClientstorage() {
257            return clientstorage;
258        }
259        public String getSessionstorage() {
260            return sessionstorage;
261        }
262        /**
263         * @param clientstorage The clientstorage to set.
264         */
265        public void setClientstorage(String clientstorage) {
266            this.clientstorage = clientstorage;
267        }
268        public void setSessionstorage(String sessionstorage) {
269            this.sessionstorage = sessionstorage;
270        }
271    
272        /**
273         * @see railo.runtime.util.IApplicationContext#hasName()
274         */
275        public boolean hasName() {
276            return name!=null;
277        }
278        
279        /**
280         * @param scriptProtect The scriptProtect to set.
281         */
282        public void setScriptProtect(int scriptProtect) {
283                    this.scriptProtect=scriptProtect;
284            }
285    
286            /**
287             * @see railo.runtime.util.ApplicationContext#getScriptProtect()
288             */
289            public int getScriptProtect() {
290                    //if(isDefault)print.err("get:"+scriptProtect);
291                    return scriptProtect;
292            }
293    
294            
295    
296    
297            public void setMappings(Mapping[] mappings) {
298                    if(mappings.length>0)this.mappings=mappings;
299            }
300    
301            /**
302             * @return the mappings
303             */
304            public Mapping[] getMappings() {
305                    return mappings;
306            }
307    
308            public void setCustomTagMappings(Mapping[] ctmappings) {
309                    this.ctmappings=ctmappings;
310            }
311    
312            public Mapping[] getCustomTagMappings() {
313                    return ctmappings;
314            }
315    
316            public void setComponentMappings(Mapping[] cmappings) {
317                    this.cmappings=cmappings;
318            }
319    
320            public Mapping[] getComponentMappings() {
321                    return cmappings;
322            }
323    
324            public void setSecureJson(boolean secureJson) {
325                    this.secureJson=secureJson;
326            }
327            
328            public void setSecureJsonPrefix(String secureJsonPrefix) {
329                    this.secureJsonPrefix=secureJsonPrefix;
330            }
331    
332            /**
333             * @return the secureJson
334             */
335            public boolean getSecureJson() {
336                    return secureJson;
337            }
338    
339            /**
340             * @return the secureJsonPrefix
341             */
342            public String getSecureJsonPrefix() {
343                    return secureJsonPrefix;
344            }
345    
346             /**
347             * @return the defaultDataSource
348             */
349            public String getDefaultDataSource() {
350                    return defaultDataSource;
351            }
352    
353            /**
354             * @param defaultDataSource the defaultDataSource to set
355             */
356            public void setDefaultDataSource(String defaultDataSource) {
357                    this.defaultDataSource = defaultDataSource;
358            }
359            
360            public void setORMDataSource(String ormdatasource) {
361                    this.ormdatasource = ormdatasource;
362            }
363    
364            public boolean isORMEnabled() {
365                    return ormEnabled;
366            }
367    
368            public String getORMDatasource() {
369                    return ormdatasource;
370            }
371    
372            public ORMConfiguration getORMConfiguration() {
373                    return config;
374            }
375            public void setORMConfiguration(ORMConfiguration config) {
376                    this.config= config;
377            }
378    
379            public void setORMEnabled(boolean ormEnabled) {
380                    this.ormEnabled=ormEnabled;
381            }
382    
383            /**
384             * @return the s3
385             */
386            public Properties getS3() {
387                    if(s3==null) s3=new Properties();
388                    return s3;
389            }
390    
391            /**
392             * @return the localMode
393             */
394            public int getLocalMode() {
395                    return localMode;
396            }
397    
398    
399            /**
400             * @param localMode the localMode to set
401             */
402            public void setLocalMode(int localMode) {
403                    this.localMode = localMode;
404            }
405    
406    
407    
408        /**
409             * @return the sessionType
410             */
411            public short getSessionType() {
412                    return sessionType;
413            }
414    
415        /**
416             * @return the sessionType
417             */
418            public void setSessionType(short sessionType) {
419                    this.sessionType= sessionType;
420            }
421    
422    
423            /**
424             * @return the sessionCluster
425             */
426            public boolean getSessionCluster() {
427                    return sessionCluster;
428            }
429    
430    
431            /**
432             * @param sessionCluster the sessionCluster to set
433             */
434            public void setSessionCluster(boolean sessionCluster) {
435                    this.sessionCluster = sessionCluster;
436            }
437    
438    
439            /**
440             * @return the clientCluster
441             */
442            public boolean getClientCluster() {
443                    return clientCluster;
444            }
445    
446    
447            /**
448             * @param clientCluster the clientCluster to set
449             */
450            public void setClientCluster(boolean clientCluster) {
451                    this.clientCluster = clientCluster;
452            }
453    
454    
455            public void setS3(Properties s3) {
456                    this.s3=s3;
457            }
458    
459            /**
460             * @see railo.runtime.listener.ApplicationContextPro#setORMDatasource(java.lang.String)
461             */
462            public void setORMDatasource(String ormdatasource) {
463                    this.ormdatasource=ormdatasource;
464            }
465    
466            @Override
467            public void reinitORM(PageContext pc) throws PageException {
468                    // do nothing
469            }
470    
471            @Override
472            public Resource getSource() {
473                    return source;
474            }
475    }