001 /**
002 *
003 * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 *
017 **/
018 package org.jencks.factory;
019
020 import java.util.Collection;
021
022 import javax.resource.spi.BootstrapContext;
023 import javax.resource.spi.work.WorkManager;
024 import javax.transaction.xa.XAException;
025
026 import org.apache.geronimo.connector.BootstrapContextImpl;
027 import org.apache.geronimo.connector.work.GeronimoWorkManager;
028 import org.apache.geronimo.transaction.ExtendedTransactionManager;
029 import org.apache.geronimo.transaction.context.TransactionContextManager;
030 import org.apache.geronimo.transaction.manager.TransactionLog;
031 import org.apache.geronimo.transaction.manager.XidImporter;
032 import org.springframework.beans.factory.FactoryBean;
033 import org.springframework.beans.factory.InitializingBean;
034 import org.springframework.context.ApplicationContext;
035 import org.springframework.context.ApplicationContextAware;
036
037 /**
038 * A Spring {@link FactoryBean} for creating a {@link BootstrapContext} for the JCA container
039 * with the {@link WorkManager} and {@link ExtendedTransactionManager}.
040 *
041 * @version $Revision: 1.5 $
042 */
043 public class BootstrapContextFactoryBean implements FactoryBean, InitializingBean, ApplicationContextAware {
044
045 private ApplicationContext applicationContext;
046 private BootstrapContext bootstrapContext;
047 private GeronimoWorkManager workManager;
048 private WorkManagerFactoryBean workManagerFactory = new WorkManagerFactoryBean();
049
050 public Object getObject() throws Exception {
051 return bootstrapContext;
052 }
053
054 public Class getObjectType() {
055 return BootstrapContext.class;
056 }
057
058 public boolean isSingleton() {
059 return true;
060 }
061
062 public void afterPropertiesSet() throws Exception {
063 bootstrapContext = new BootstrapContextImpl(getWorkManager());
064 }
065
066 public void setApplicationContext(ApplicationContext applicationContext) {
067 this.applicationContext = applicationContext;
068 }
069
070
071 // Properties
072 //-------------------------------------------------------------------------
073 public GeronimoWorkManager getWorkManager() throws Exception {
074 if (workManager == null) {
075 workManagerFactory.setApplicationContext(applicationContext);
076 workManager = workManagerFactory.getWorkManager();
077 }
078 return workManager;
079 }
080
081 public void setWorkManager(GeronimoWorkManager workManager) {
082 this.workManager = workManager;
083 }
084
085 public TransactionContextManager getTransactionContextManager() throws XAException {
086 return workManagerFactory.getTransactionContextManager();
087 }
088
089 public void setTransactionContextManager(TransactionContextManager transactionContextManager) {
090 workManagerFactory.setTransactionContextManager(transactionContextManager);
091 }
092
093 public int getThreadPoolSize() {
094 return workManagerFactory.getThreadPoolSize();
095 }
096
097 public void setThreadPoolSize(int threadPoolSize) {
098 workManagerFactory.setThreadPoolSize(threadPoolSize);
099 }
100
101 public ExtendedTransactionManager getTransactionManager() throws XAException {
102 return workManagerFactory.getTransactionManager();
103 }
104
105 public void setTransactionManager(ExtendedTransactionManager transactionManager) {
106 workManagerFactory.setTransactionManager(transactionManager);
107 }
108
109 public XidImporter getXidImporter() {
110 return workManagerFactory.getXidImporter();
111 }
112
113 public void setXidImporter(XidImporter xidImporter) {
114 workManagerFactory.setXidImporter(xidImporter);
115 }
116
117 public int getDefaultTransactionTimeoutSeconds() {
118 return workManagerFactory.getDefaultTransactionTimeoutSeconds();
119 }
120
121 public void setDefaultTransactionTimeoutSeconds(int defaultTransactionTimeoutSeconds) {
122 workManagerFactory.setDefaultTransactionTimeoutSeconds(defaultTransactionTimeoutSeconds);
123 }
124
125 public TransactionLog getTransactionLog() {
126 return workManagerFactory.getTransactionLog();
127 }
128
129 public void setTransactionLog(TransactionLog transactionLog) {
130 workManagerFactory.setTransactionLog(transactionLog);
131 }
132
133 public Collection getResourceManagers() {
134 return workManagerFactory.getResourceManagers();
135 }
136
137 public void setResourceManagers(Collection resourceManagers) {
138 workManagerFactory.setResourceManagers(resourceManagers);
139 }
140 }