public boolean service(Request request, Response response, RequestHandler handler) throws IOException { try { return handler.service(request, response); } finally { perThreadManager.cleanup(); } } }
public AlertManagerImpl(ApplicationStateManager asm, Request request, AjaxResponseRenderer ajaxResponseRenderer, PerthreadManager perThreadManager) { this.asm = asm; this.request = request; this.ajaxResponseRenderer = ajaxResponseRenderer; needAlertStorageCleanup = perThreadManager.createValue(); }
@PostInjection public void listenForThreadCleanup(PerthreadManager perthreadManager) { perthreadManager.addThreadCleanupCallback(this); }
@Scope(ScopeConstants.PERTHREAD) public static EntityManagerManager buildEntityManagerManager(final EntityManagerSource entityManagerSource, final PerthreadManager perthreadManager, final Logger logger) { final EntityManagerManagerImpl service = new EntityManagerManagerImpl(entityManagerSource, logger); perthreadManager.addThreadCleanupListener(service); return service; }
/** * The session manager manages sessions on a per-thread/per-request basis. Any active transaction will be rolled * back at {@linkplain org.apache.tapestry5.ioc.Registry#cleanupThread() thread cleanup time}. The thread is * cleaned up automatically in a Tapestry web application. */ @Scope(ScopeConstants.PERTHREAD) public static HibernateSessionManager buildHibernateSessionManager(HibernateSessionSource sessionSource, PerthreadManager perthreadManager) { HibernateSessionManagerImpl service = new HibernateSessionManagerImpl(sessionSource); perthreadManager.addThreadCleanupListener(service); return service; }
@Scope(ScopeConstants.PERTHREAD) public static EntityManagerManager buildEntityManagerManager(final EntityManagerSource entityManagerSource, final PerthreadManager perthreadManager, final Logger logger) { final EntityManagerManagerImpl service = new EntityManagerManagerImpl(entityManagerSource, logger); perthreadManager.addThreadCleanupListener(service); return service; }
public JGrowlManagerImpl(ApplicationStateManager asm, Request request, AjaxResponseRenderer ajaxResponseRenderer, PerthreadManager perThreadManager) { this.asm = asm; this.request = request; this.ajaxResponseRenderer = ajaxResponseRenderer; needAlertStorageCleanup = perThreadManager.createValue(); }
@Override public void cleanupThread() { lock.check(); perthreadManager.cleanup(); }
public void acquireWriteLock() { if (isWriteLocked()) { return; } if (isReadLocked()) { lock.readLock().unlock(); } // During this window, no lock is held, and the next call may block. lock.writeLock().lock(); perthreadManager.addThreadCleanupCallback(new Runnable() { public void run() { // This is the only way a write lock is unlocked, so no check is needed. lock.writeLock().unlock(); } }); } }
/** * The session manager manages sessions on a per-thread/per-request basis. Any active transaction will be rolled * back at {@linkplain org.apache.tapestry5.ioc.Registry#cleanupThread() thread cleanup time}. The thread is * cleaned up automatically in a Tapestry web application. */ @Scope(ScopeConstants.PERTHREAD) public static HibernateSessionManager buildHibernateSessionManager(HibernateSessionSource sessionSource, PerthreadManager perthreadManager) { HibernateSessionManagerImpl service = new HibernateSessionManagerImpl(sessionSource); perthreadManager.addThreadCleanupListener(service); return service; }
public <T> PerThreadValue<T> createPerThreadValue() { return perThreadManager.createValue(); }
@Override public T call() throws Exception { try { return invocable.invoke(); } finally { perthreadManager.cleanup(); } } };
@Scope(ScopeConstants.PERTHREAD) public Environment buildEnvironment(PerthreadManager perthreadManager) { final EnvironmentImpl service = new EnvironmentImpl(); perthreadManager.addThreadCleanupCallback(new Runnable() { public void run() { service.threadDidCleanup(); } }); return service; }
@Scope(ScopeConstants.PERTHREAD) public static MultipartDecoder buildMultipartDecoder(PerthreadManager perthreadManager, RegistryShutdownHub shutdownHub, @Autobuild MultipartDecoderImpl multipartDecoder) { // This is proabably overkill since the FileCleaner should catch temporary files, but lets // be safe. perthreadManager.addThreadCleanupListener(multipartDecoder); if (needToAddShutdownListener.getAndSet(false)) { shutdownHub.addRegistryShutdownListener(new Runnable() { @Override public void run() { FileCleaner.exitWhenFinished(); } }); } return multipartDecoder; }
public PerThreadValue get(InstanceContext context) { // Each instance will get a new PerThreadValue return perThreadManager.createValue(); } });
@Override public void cleanupThread() { lock.check(); perthreadManager.cleanup(); }
public void acquireReadLock() { if (isReadLocked() || isWriteLocked()) { return; } lock.readLock().lock(); perthreadManager.addThreadCleanupCallback(new Runnable() { public void run() { // The read lock may have been released, if upgraded to a write lock. if (isReadLocked()) { lock.readLock().unlock(); } } }); }
@Scope(ScopeConstants.PERTHREAD) public static MultipartDecoder buildMultipartDecoder(PerthreadManager perthreadManager, RegistryShutdownHub shutdownHub, @Autobuild MultipartDecoderImpl multipartDecoder) { // This is proabably overkill since the FileCleaner should catch temporary files, but lets // be safe. perthreadManager.addThreadCleanupListener(multipartDecoder); if (needToAddShutdownListener.getAndSet(false)) { shutdownHub.addRegistryShutdownListener(new Runnable() { @Override public void run() { FileCleaner.exitWhenFinished(); } }); } return multipartDecoder; }
public PersistentLocaleImpl(PerthreadManager perThreadManager, @Symbol(SymbolConstants.SUPPORTED_LOCALES) String supportedLocales) { this.supportedLocales = supportedLocales; localeValue = perThreadManager.createValue(); for (String name : TapestryInternalUtils.splitAtCommas(supportedLocales)) { localeNames.add(name.toLowerCase()); } }
@Override public T call() throws Exception { try { return invocable.invoke(); } finally { perthreadManager.cleanup(); } } };