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 }