001    /*
002     * ============================================================================
003     * GNU Lesser General Public License
004     * ============================================================================
005     *
006     * Beanlet - JSE Application Container.
007     * Copyright (C) 2006  Leon van Zantvoort
008     * 
009     * This library is free software; you can redistribute it and/or
010     * modify it under the terms of the GNU Lesser General Public
011     * License as published by the Free Software Foundation; either
012     * version 2.1 of the License, or (at your option) any later version.
013     * 
014     * This library is distributed in the hope that it will be useful,
015     * but WITHOUT ANY WARRANTY; without even the implied warranty of
016     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
017     * Lesser General Public License for more details.
018     * 
019     * You should have received a copy of the GNU Lesser General Public
020     * License along with this library; if not, write to the Free Software
021     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
022     * 
023     * Leon van Zantvoort
024     * 243 Acalanes Drive #11
025     * Sunnyvale, CA 94086
026     * USA
027     *
028     * zantvoort@users.sourceforge.net
029     * http://beanlet.org
030     */
031    package org.beanlet.transaction;
032    
033    import javax.transaction.UserTransaction;
034    import org.beanlet.FactoryBeanlet;
035    import org.beanlet.Inject;
036    
037    /**
038     * <p>Factory beanlet for a {@code UserTransaction}.</p>
039     * 
040     * <p>The following example demonstrates how to create a factory using a
041     * transaction manager from the JNDI tree:
042     * 
043     * <pre>
044     * &lt;beanlet type="org.beanlet.transaction.UserTransactionFactoryBeanlet"&gt;
045     *   &lt;wiring value="BY_NAME"/&gt;
046     *   &lt;inject constructor="true" name="java:comp/UserTransaction"/&gt;
047     * &lt;/beanlet&gt;
048     * </pre>
049     * </p>
050     * 
051     * @author Leon van Zantvoort
052     */
053    public final class UserTransactionFactoryBeanlet implements 
054            FactoryBeanlet<UserTransaction> {
055    
056        private final UserTransaction userTransaction;
057        
058        /**
059         * Use constructor depenency injection to create a new 
060         * {@code UserTransactionFactoryBeanlet} instance.
061         * 
062         * @param userTransaction user transaction instance to be returned 
063         * by this factory's {@code getObject} method.
064         */
065        @Inject
066        public UserTransactionFactoryBeanlet(UserTransaction userTransaction) {
067            this.userTransaction = userTransaction;
068        }
069    
070        /**
071         * Returns the user transaction instance that was passed to the 
072         * constructor of this factory.
073         */
074        public UserTransaction getObject() {
075            return userTransaction;
076        }
077    }