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.Client;
009    import railo.runtime.type.scope.storage.StorageScopeCookie;
010    
011    public final class ClientCookie extends StorageScopeCookie implements Client {
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            @Override
030            public Collection duplicate(boolean deepCopy) {
031            return new ClientCookie(this,deepCopy);
032            }
033            
034            
035            
036            /**
037             * load new instance of the class
038             * @param name
039             * @param pc
040             * @param log 
041             * @return
042             */
043            public static Client getInstance(String name, PageContext pc, Log log) {
044                    if(!StringUtil.isEmpty(name))
045                            name=StringUtil.toUpperCase(StringUtil.toVariableName(name));
046                    String cookieName="CF_"+TYPE+"_"+name;
047                    return new ClientCookie(pc,cookieName, _loadData(pc,cookieName,SCOPE_CLIENT,"client",log));
048            }
049    }