001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.runtime.type.scope.session;
020
021import lucee.commons.io.log.Log;
022import lucee.commons.io.res.Resource;
023import lucee.runtime.PageContext;
024import lucee.runtime.type.Collection;
025import lucee.runtime.type.Struct;
026import lucee.runtime.type.scope.Session;
027import lucee.runtime.type.scope.storage.StorageScopeFile;
028
029public class SessionFile extends StorageScopeFile implements Session {
030
031        private static final long serialVersionUID = 3896214476118229640L;
032
033        
034        /**
035         * Constructor of the class
036         * @param pc
037         * @param name
038         * @param sct
039         */
040        private SessionFile(PageContext pc,Resource res,Struct sct) {
041                super(pc,res,"session",SCOPE_SESSION,sct);
042        }
043        
044
045        /**
046         * Constructor of the class, clone existing
047         * @param other
048         */
049        private SessionFile(SessionFile other,boolean deepCopy) {
050                super(other,deepCopy);
051        }
052
053        /**
054         * load new instance of the class
055         * @param name
056         * @param pc
057         * @param checkExpires 
058         * @return
059         */
060        public static Session getInstance(String name, PageContext pc,Log log) {
061
062                Resource res=_loadResource(pc.getConfig(),SCOPE_SESSION,name,pc.getCFID());
063                Struct data=_loadData(pc,res,log);
064                return new SessionFile(pc,res,data);
065        }
066        
067
068        public static boolean hasInstance(String name, PageContext pc) {
069                Resource res=_loadResource(pc.getConfig(),SCOPE_SESSION,name,pc.getCFID());
070                Struct data=_loadData(pc,res,null);
071                return data!=null;
072        }
073        
074
075        @Override
076        public Collection duplicate(boolean deepCopy) {
077        return new SessionFile(this,deepCopy);
078        }
079}