001 package railo.runtime.type.scope.storage; 002 003 import railo.commons.io.cache.CacheEntry; 004 import railo.commons.io.cache.CacheEventListener; 005 import railo.runtime.CFMLFactoryImpl; 006 import railo.runtime.config.Config; 007 import railo.runtime.engine.ThreadLocalPageContext; 008 import railo.runtime.exp.ExceptionHandler; 009 import railo.runtime.listener.ApplicationListener; 010 import railo.runtime.op.Caster; 011 012 public class SessionEndCacheEvent implements CacheEventListener { 013 014 public void onExpires(CacheEntry entry) { 015 //return new StringBuilder(cache instanceof CacheEvent?"":"railo-storage:").append(type).append(":").append(cfid).append(":").append(appName).toString(); 016 017 String key=entry.getKey(); 018 019 // type 020 int index=key.indexOf(':'),last; 021 String type=key.substring(0,index); 022 023 // cfid 024 last=index+1; 025 index=key.indexOf(':',last); 026 String cfid=key.substring(last,index); 027 028 // appName 029 last=index+1; 030 index=key.indexOf(':',last); 031 String appName=key.substring(last); 032 033 Config config = ThreadLocalPageContext.getConfig(); 034 035 _doEnd((CFMLFactoryImpl) config.getFactory(), appName, cfid); 036 } 037 038 private void _doEnd(CFMLFactoryImpl factory,String appName, String cfid) { 039 ApplicationListener listener = factory.getConfig().getApplicationListener(); 040 try { 041 factory.getScopeContext().info("call onSessionEnd for "+appName+"/"+cfid); 042 listener.onSessionEnd(factory, appName, cfid); 043 } 044 catch (Throwable t) { 045 ExceptionHandler.log(factory.getConfig(),Caster.toPageException(t)); 046 } 047 } 048 049 @Override 050 public void onRemove(CacheEntry entry) { 051 // TODO Auto-generated method stub 052 053 } 054 055 @Override 056 public void onPut(CacheEntry entry) { 057 // TODO Auto-generated method stub 058 059 } 060 061 062 @Override 063 public CacheEventListener duplicate() { 064 // TODO Auto-generated method stub 065 return null; 066 } 067 068 }