001    package railo.runtime.type.scope.client;
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.ClientPlus;
009    import railo.runtime.type.scope.storage.StorageScopeCookie;
010    
011    public final class ClientCookie extends StorageScopeCookie implements ClientPlus {
012    
013            private static final long serialVersionUID = 4203695198240254464L;
014            private static final String TYPE = "CLIENT";
015    
016            private ClientCookie(PageContext pc,String cookieName,Struct sct) {
017                    super(pc,cookieName,"client",SCOPE_CLIENT,sct);
018            }
019    
020            /**
021             * Constructor of the class, clone existing
022             * @param other
023             */
024            private ClientCookie(ClientCookie other,boolean deepCopy) {
025                    super(other,deepCopy);
026            }
027            
028            
029            /**
030             *
031             * @see railo.runtime.type.Collection#duplicate(boolean)
032             */
033            public Collection duplicate(boolean deepCopy) {
034            return new ClientCookie(this,deepCopy);
035            }
036            
037            
038            
039            /**
040             * load new instance of the class
041             * @param name
042             * @param pc
043             * @param log 
044             * @return
045             */
046            public static ClientPlus getInstance(String name, PageContext pc, Log log) {
047                    if(!StringUtil.isEmpty(name))
048                            name=StringUtil.toUpperCase(StringUtil.toVariableName(name));
049                    String cookieName="CF_"+TYPE+"_"+name;
050                    return new ClientCookie(pc,cookieName, _loadData(pc,cookieName,SCOPE_CLIENT,"client",log));
051            }
052    }