User: dsundstrom Date: 01/11/29 10:42:23 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCFindByForeignKeyCommand.java JDBCLoadEntityCommand.java JDBCLoadFieldCommand.java JDBCLoadRelationCommand.java JDBCReadAheadCommand.java JDBCStoreManager.java Log: Added select for update code. Revision Changes Path 1.8 +5 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindByForeignKeyCommand.java Index: JDBCFindByForeignKeyCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCFindByForeignKeyCommand.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- JDBCFindByForeignKeyCommand.java 2001/11/28 11:32:54 1.7 +++ JDBCFindByForeignKeyCommand.java 2001/11/29 18:42:23 1.8 @@ -23,7 +23,7 @@ * entity's table. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ */ public class JDBCFindByForeignKeyCommand { private JDBCStoreManager manager; @@ -50,6 +50,10 @@ entity.getJDBCPrimaryKeyFields())); sql.append(" FROM ").append(entity.getTableName()); sql.append(" WHERE ").append(SQLUtil.getWhereClause(foreignKeyFields)); + + if(entity.getMetaData().hasSelectForUpdate()) { + sql.append(" FOR UPDATE"); + } Connection con = null; PreparedStatement ps = null; 1.9 +5 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java Index: JDBCLoadEntityCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- JDBCLoadEntityCommand.java 2001/11/28 11:32:54 1.8 +++ JDBCLoadEntityCommand.java 2001/11/29 18:42:23 1.9 @@ -33,7 +33,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> * @author <a href="mailto:[EMAIL PROTECTED]">Dirk Zimmermann</a> * @author <a href="mailto:[EMAIL PROTECTED]">danch (Dan Christopherson)</a> - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ public class JDBCLoadEntityCommand implements LoadEntityCommand { private JDBCStoreManager manager; @@ -69,6 +69,10 @@ sql.append(" FROM ").append(entity.getTableName()); sql.append(" WHERE ").append( SQLUtil.getWhereClause(entity.getJDBCPrimaryKeyFields())); + + if(entity.getMetaData().hasSelectForUpdate()) { + sql.append(" FOR UPDATE"); + } Connection con = null; PreparedStatement ps = null; 1.8 +5 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadFieldCommand.java Index: JDBCLoadFieldCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadFieldCommand.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- JDBCLoadFieldCommand.java 2001/11/28 11:32:54 1.7 +++ JDBCLoadFieldCommand.java 2001/11/29 18:42:23 1.8 @@ -30,7 +30,7 @@ * fields. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ */ public class JDBCLoadFieldCommand { private JDBCStoreManager manager; @@ -79,6 +79,10 @@ sql.append(" FROM ").append(entity.getTableName()); sql.append(" WHERE ").append( SQLUtil.getWhereClause(entity.getJDBCPrimaryKeyFields())); + + if(entity.getMetaData().hasSelectForUpdate()) { + sql.append(" FOR UPDATE"); + } Connection con = null; PreparedStatement ps = null; 1.7 +5 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadRelationCommand.java Index: JDBCLoadRelationCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadRelationCommand.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- JDBCLoadRelationCommand.java 2001/11/28 11:32:54 1.6 +++ JDBCLoadRelationCommand.java 2001/11/29 18:42:23 1.7 @@ -22,7 +22,7 @@ * Loads relations for a particular entity from a relation table. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.6 $ + * @version $Revision: 1.7 $ */ public class JDBCLoadRelationCommand { private JDBCStoreManager manager; @@ -52,6 +52,10 @@ sql.append(cmrField.getRelationMetaData().getTableName()); sql.append(" WHERE ").append(SQLUtil.getWhereClause( cmrField.getTableKeyFields())); + + if(cmrField.getRelationMetaData().hasSelectForUpdate()) { + sql.append(" FOR UPDATE"); + } Connection con = null; PreparedStatement ps = null; 1.5 +5 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCReadAheadCommand.java Index: JDBCReadAheadCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCReadAheadCommand.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JDBCReadAheadCommand.java 2001/11/28 22:06:19 1.4 +++ JDBCReadAheadCommand.java 2001/11/29 18:42:23 1.5 @@ -24,7 +24,7 @@ * JDBCReadAheadCommand * * @author <a href="mailto:[EMAIL PROTECTED]">Oleg Nitz</a> - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public class JDBCReadAheadCommand { @@ -158,6 +158,10 @@ } sql.append(SQLUtil.getWhereClause( entity.getJDBCPrimaryKeyFields())); + } + + if(entity.getMetaData().hasSelectForUpdate()) { + sql.append(" FOR UPDATE"); } lastKeysCount = keysCount; 1.15 +3 -6 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreManager.java Index: JDBCStoreManager.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- JDBCStoreManager.java 2001/11/28 11:32:54 1.14 +++ JDBCStoreManager.java 2001/11/29 18:42:23 1.15 @@ -33,8 +33,6 @@ import org.jboss.ejb.EntityPersistenceStore2; import org.jboss.ejb.EntityEnterpriseContext; import org.jboss.ejb.ListCacheKey; -import org.jboss.ejb.plugins.cmp.CMPStoreManager; -import org.jboss.ejb.plugins.cmp.CommandFactory; import org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge; @@ -66,7 +64,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> * @see org.jboss.ejb.EntityPersistenceStore - * @version $Revision: 1.14 $ + * @version $Revision: 1.15 $ */ public class JDBCStoreManager implements EntityPersistenceStore2 { @@ -569,9 +567,8 @@ return; } - // this is a double check lock and must be removed - if (trans != null && !transactions.contains(trans)) { - synchronized (transactions) { // synchronize only if absolutely necessary + synchronized (transactions) { + if (trans != null && !transactions.contains(trans)) { if (!transactions.contains(trans)) { try { trans.registerSynchronization(new PreloadClearSynch(trans));
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development