001    /*
002     * Copyright 2002-2005 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.jencks.factory;
018    
019    import org.apache.geronimo.transaction.log.UnrecoverableLog;
020    import org.apache.geronimo.transaction.manager.TransactionLog;
021    import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
022    import org.springframework.beans.factory.FactoryBean;
023    import org.springframework.beans.factory.InitializingBean;
024    
025    import java.util.Collection;
026    
027    /**
028     * This FactoryBean creates and configures the Geronimo implementation
029     * of the TransactionManager interface.
030     *
031     * @author Thierry Templier
032     * @see UnrecoverableLog
033     * @see org.apache.geronimo.transaction.log.HOWLLog
034     */
035    public class TransactionManagerFactoryBean implements FactoryBean, InitializingBean {
036    
037        private int defaultTransactionTimeoutSeconds = 600;
038        private TransactionLog transactionLog;
039        private Collection resourceManagers;
040    
041        private TransactionManagerImpl transactionManagerImpl;
042    
043        public Object getObject() throws Exception {
044            return transactionManagerImpl;
045        }
046    
047        public Class getObjectType() {
048            return TransactionManagerImpl.class;
049        }
050    
051        public boolean isSingleton() {
052            return true;
053        }
054    
055        /**
056         * Set the default transaction timeout in second.
057         */
058        public void setDefaultTransactionTimeoutSeconds(int timeout) {
059            defaultTransactionTimeoutSeconds = timeout;
060        }
061    
062        /**
063         * Set the transaction log for the transaction context manager.
064         */
065        public void setTransactionLog(TransactionLog log) {
066            transactionLog = log;
067        }
068    
069        public Collection getResourceManagers() {
070            return resourceManagers;
071        }
072    
073        /**
074         * Set the resource managers
075         */
076        public void setResourceManagers(Collection resourceManagers) {
077            this.resourceManagers = resourceManagers;
078        }
079    
080        public void afterPropertiesSet() throws Exception {
081            if (transactionLog == null) {
082                transactionLog = new UnrecoverableLog();
083            }
084            this.transactionManagerImpl = new TransactionManagerImpl(defaultTransactionTimeoutSeconds,
085                    transactionLog, resourceManagers);
086        }
087    
088    }