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.SessionPlus;
009    import railo.runtime.type.scope.storage.StorageScopeCookie;
010    
011    public final class SessionCookie extends StorageScopeCookie implements SessionPlus {
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            /**
030             *
031             * @see railo.runtime.type.Collection#duplicate(boolean)
032             */
033            public Collection duplicate(boolean deepCopy) {
034            return new SessionCookie(this,deepCopy);
035            }
036            
037            
038            
039            /**
040             * load new instance of the class
041             * @param name
042             * @param pc
043             * @return
044             */
045            public static SessionPlus getInstance(String name, PageContext pc,Log log) {
046                    if(!StringUtil.isEmpty(name))
047                            name=StringUtil.toUpperCase(StringUtil.toVariableName(name));
048                    String cookieName="CF_"+TYPE+"_"+name;
049                    return new SessionCookie(pc,cookieName, _loadData(pc,cookieName,SCOPE_SESSION,"session",log));
050            }
051            
052            public static boolean hasInstance(String name, PageContext pc) {
053                    if(!StringUtil.isEmpty(name))
054                            name=StringUtil.toUpperCase(StringUtil.toVariableName(name));
055                    String cookieName="CF_"+TYPE+"_"+name;
056                    return has(pc,cookieName,SCOPE_SESSION,"session");
057            }
058    }