User: dsundstrom Date: 01/12/27 09:34:33 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCStartCommand.java Log: Fixed bug in created table list, where the tables created by each entity were private to that entity. This was a proble for creation of foreign key constraints in relationships. Changed to use application data container in JDBCStoreManager. Revision Changes Path 1.12 +21 -7 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java Index: JDBCStartCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- JDBCStartCommand.java 2001/12/02 01:41:46 1.11 +++ JDBCStartCommand.java 2001/12/27 17:34:33 1.12 @@ -12,7 +12,10 @@ import java.sql.ResultSet; import java.sql.Statement; import java.sql.SQLException; +import java.util.Collections; import java.util.HashSet; +import java.util.Map; +import java.util.Set; import javax.sql.DataSource; import javax.ejb.EJBException; @@ -32,17 +35,16 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a> * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a> - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ */ public class JDBCStartCommand { + private final static Object CREATED_TABLES_KEY = new Object(); private JDBCStoreManager manager; private JDBCEntityBridge entity; private JDBCEntityMetaData entityMetaData; private Logger log; - private HashSet createdTables = new HashSet(); - public JDBCStartCommand(JDBCStoreManager manager) { this.manager = manager; entity = manager.getEntityBridge(); @@ -53,6 +55,16 @@ this.getClass().getName() + "." + manager.getMetaData().getName()); + + // Create the created tables set + Map applicationData = manager.getApplicationDataMap(); + synchronized(applicationData) { + if(!applicationData.containsKey(CREATED_TABLES_KEY)) { + applicationData.put( + CREATED_TABLES_KEY, + Collections.synchronizedSet(new HashSet())); + } + } } public void execute() throws Exception { @@ -134,10 +146,6 @@ // commit the transaction manager.getContainer().getTransactionManager().commit (); - - // success - log.info("Created table '" + tableName + "' successfully."); - createdTables.add(tableName); } catch (Exception e) { log.debug("Could not create table " + tableName, e); try { @@ -149,6 +157,11 @@ JDBCUtil.safeClose(statement); JDBCUtil.safeClose(con); } + + // success + log.info("Created table '" + tableName + "' successfully."); + Set createdTables = (Set)manager.getApplicationData(CREATED_TABLES_KEY); + createdTables.add(tableName); } private boolean tableExists( @@ -279,6 +292,7 @@ JDBCCMPFieldBridge[] referencesFields) { // can only alter tables we created + Set createdTables = (Set)manager.getApplicationData(CREATED_TABLES_KEY); if(!createdTables.contains(tableName)) { return; }
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development