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