1 /** 2 * EasyBeans 3 * Copyright (C) 2006 Bull S.A.S. 4 * Contact: easybeans@objectweb.org 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 19 * USA 20 * 21 * -------------------------------------------------------------------------- 22 * $Id: AbsRemoveInterceptor.java 940 2006-07-26 09:05:27Z benoitf $ 23 * -------------------------------------------------------------------------- 24 */ 25 26 package org.objectweb.easybeans.container.session.stateful.interceptors; 27 28 import org.objectweb.easybeans.api.EasyBeansInvocationContext; 29 import org.objectweb.easybeans.api.Factory; 30 import org.objectweb.easybeans.api.bean.EasyBeansSFSB; 31 import org.objectweb.easybeans.api.pool.Pool; 32 import org.objectweb.easybeans.api.pool.PoolException; 33 import org.objectweb.easybeans.container.session.stateful.StatefulSessionFactory; 34 35 36 /** 37 * Defines a method that discard the bean found in the invocation context. 38 * @author Florent Benoit 39 */ 40 public abstract class AbsRemoveInterceptor { 41 42 /** 43 * Remove from the factory's pool the bean found in the current invocation context. 44 * @param invocationContext the context of the current invocation 45 * @throws PoolException if removal is failing 46 */ 47 protected void remove(final EasyBeansInvocationContext invocationContext) throws PoolException { 48 // Gets the factory 49 Factory factory = invocationContext.getFactory(); 50 51 // factory is a stateful factory. 52 StatefulSessionFactory statefulFactory = (StatefulSessionFactory) factory; 53 54 // get pool 55 Pool<EasyBeansSFSB, Long> pool = statefulFactory.getPool(); 56 57 // Bean is a stateful bean 58 EasyBeansSFSB bean = (EasyBeansSFSB) invocationContext.getTarget(); 59 60 // discard instance 61 pool.discard(bean); 62 } 63 } 64