Good catch. I forgot to mark the application data map as static. I'm not really done with this code yet; I need to change to code to use templates for pk and fk constraints, as all of the lame db vendors use a different syntax.
-dain > -----Original Message----- > From: Langelage, Frank [mailto:[EMAIL PROTECTED]] > Sent: Friday, December 28, 2001 1:18 AM > To: Dain Sundstrom > Cc: [EMAIL PROTECTED] > Subject: Re: [JBoss-dev] CVS update: > jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCStartCommand.java > > > Hi Dain, > > I checked out the latest version and threw away my changes > for this bug. > But your change don't work for me. Again there seems to be > more than one > created table list. > For me I fixed this by making the Map applicationData in > JBDCStoreManager static. > Otherwise each Instance of JDBCStartCommand calls > applicationData.put() > in line 63. > > Regards > Frank > > Dain Sundstrom schrieb: > > > > 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/J > DBCStartCommand.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 > > _______________________________________________ > Jboss-development mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/jboss-development > _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development
