001    package railo.runtime.type.scope.session;
002    
003    import railo.commons.io.log.Log;
004    import railo.commons.lang.StringUtil;
005    import railo.runtime.PageContext;
006    import railo.runtime.type.Collection;
007    import railo.runtime.type.Struct;
008    import railo.runtime.type.scope.Session;
009    import railo.runtime.type.scope.storage.StorageScopeCookie;
010    
011    public final class SessionCookie extends StorageScopeCookie implements Session {
012    
013            private static final long serialVersionUID = -3166541654190337670L;
014            
015            private static final String TYPE = "SESSION";
016    
017            private SessionCookie(PageContext pc,String cookieName,Struct sct) {
018                    super(pc,cookieName,"session",SCOPE_SESSION,sct);
019            }
020    
021            /**
022             * Constructor of the class, clone existing
023             * @param other
024             */
025            private SessionCookie(SessionCookie other,boolean deepCopy) {
026                    super(other,deepCopy);
027            }
028            
029            @Override
030            public Collection duplicate(boolean deepCopy) {
031            return new SessionCookie(this,deepCopy);
032            }
033            
034            
035            
036            /**
037             * load new instance of the class
038             * @param name
039             * @param pc
040             * @return
041             */
042            public static Session getInstance(String name, PageContext pc,Log log) {
043                    if(!StringUtil.isEmpty(name))
044                            name=StringUtil.toUpperCase(StringUtil.toVariableName(name));
045                    String cookieName="CF_"+TYPE+"_"+name;
046                    return new SessionCookie(pc,cookieName, _loadData(pc,cookieName,SCOPE_SESSION,"session",log));
047            }
048            
049            public static boolean hasInstance(String name, PageContext pc) {
050                    if(!StringUtil.isEmpty(name))
051                            name=StringUtil.toUpperCase(StringUtil.toVariableName(name));
052                    String cookieName="CF_"+TYPE+"_"+name;
053                    return has(pc,cookieName,SCOPE_SESSION,"session");
054            }
055    }