1 16 package org.mortbay.j2ee.session; 17 18 20 import java.util.Collections ; 21 import java.util.Enumeration ; 22 import java.util.HashMap ; 23 import java.util.Map ; 24 25 import org.jfox.ioc.logger.Logger; 26 27 29 35 public class 36 LocalState 37 implements State, java.io.Serializable 38 { 39 protected static final Logger _log=Logger.getLogger(LocalState.class); 40 41 protected String _id; 42 protected int _maxInactiveInterval; 43 protected int _actualMaxInactiveInterval; 44 45 protected long _creationTime; 46 protected long _lastAccessedTime; 47 protected Map _attributes; 49 50 public 51 LocalState(String id, long creationTime, int maxInactiveInterval, int actualMaxInactiveInterval) 52 { 53 _id=id; 54 _creationTime=creationTime; 55 _lastAccessedTime=_creationTime; 56 _maxInactiveInterval=maxInactiveInterval; 57 _actualMaxInactiveInterval=actualMaxInactiveInterval; 58 } 59 60 public 61 LocalState(String id, int maxInactiveInterval, int actualMaxInactiveInterval) 62 { 63 _id=id; 64 _creationTime=System.currentTimeMillis(); 65 _lastAccessedTime=_creationTime; 66 _maxInactiveInterval=maxInactiveInterval; 67 _actualMaxInactiveInterval=actualMaxInactiveInterval; 68 } 69 70 protected 71 LocalState() 72 { 73 } 75 76 public String getId() {return _id;} 77 public long getCreationTime() {return _creationTime;} 78 public int getActualMaxInactiveInterval() {return _actualMaxInactiveInterval;} 79 public long getLastAccessedTime() {return _lastAccessedTime;} 80 public void setLastAccessedTime(long time) {_lastAccessedTime=time;} 81 public int getMaxInactiveInterval() {return _maxInactiveInterval;} 82 public void setMaxInactiveInterval(int interval) {_log.info("_maxInactiveInterval="+interval);_maxInactiveInterval=interval;} 83 84 88 protected static Map _emptyMap =Collections.EMPTY_MAP; 89 protected static Enumeration _emptyEnumeration =Collections.enumeration(Collections.EMPTY_LIST); 90 protected static String [] _emptyStringArray =new String [0]; 92 protected void ensureAttributes() { if (_attributes==null) _attributes=new HashMap ();} 93 94 public Object 95 getAttribute(String name) 96 { 97 return _attributes==null?null:_attributes.get(name); 99 } 100 101 public Map 102 getAttributes() 103 { 104 return (_attributes==null || _attributes.size()==0)?_emptyMap:Collections.unmodifiableMap(_attributes); 105 } 106 107 public Enumeration 108 getAttributeNameEnumeration() 109 { 110 return (_attributes==null || _attributes.size()==0)?_emptyEnumeration:Collections.enumeration(_attributes.keySet()); 111 } 112 113 public String [] 114 getAttributeNameStringArray() 115 { 116 return (_attributes==null || _attributes.size()==0)?_emptyStringArray:(String [])_attributes.keySet().toArray(new String [_attributes.size()]); 117 } 118 119 public Object 120 setAttribute(String name, Object value, boolean returnValue) 121 { 122 125 127 ensureAttributes(); 128 Object tmp=_attributes.put(name, value); 129 return returnValue?tmp:null; 130 } 131 132 public void 133 setAttributes(Map attributes) 134 { 135 if (_attributes!=null) 136 _attributes.clear(); 137 138 if (attributes.size()>0) 139 { 140 ensureAttributes(); 141 _attributes.putAll(attributes); 142 } 143 } 144 145 public Object 146 removeAttribute(String name, boolean returnValue) 147 { 148 if (_attributes==null) 149 return null; 150 else 151 { 152 Object tmp=_attributes.remove(name); 153 return returnValue?tmp:null; 154 } 155 } 156 157 protected long 158 remainingTime() 159 { 160 long maxInactiveInterval=_maxInactiveInterval<1?_actualMaxInactiveInterval:_maxInactiveInterval; 161 return (_lastAccessedTime+(maxInactiveInterval*1000L))-System.currentTimeMillis(); 162 } 163 164 public boolean 165 isValid(int extraTime) 166 { 167 long remainingTime=remainingTime(); 168 long etime=(extraTime*1000L); 169 boolean valid=remainingTime+etime>0; 170 return valid; 171 } 172 173 public boolean 174 isValid() 175 { 176 return isValid(0); 177 } 178 } 179 | Popular Tags |