[exo-jcr-commits] exo-jcr SVN: r5116 - in jcr/trunk/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/impl/util/jdbc and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Oct 28 03:02:27 EDT 2011
Author: tolusha
Date: 2011-10-28 03:02:26 -0400 (Fri, 28 Oct 2011)
New Revision: 5116
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java
Log:
EXOJCR-1585: Fix bug
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 15:49:58 UTC (rev 5115)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-28 07:02:26 UTC (rev 5116)
@@ -99,6 +99,7 @@
try
{
dbCleaner.executeCleanScripts();
+
try
{
dbCleaner.executeCommitScripts();
@@ -107,6 +108,7 @@
{
LOG.error("Can't remove temporary objects", e);
}
+
jdbcConn.commit();
}
catch (SQLException e)
@@ -171,6 +173,19 @@
dialect = DialectDetecter.detect(jdbcConn.getMetaData());
}
+ // Sybase doesn't allow DDL scripts inside transaction
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
+ {
+ if (!jdbcConn.getAutoCommit())
+ {
+ jdbcConn.setAutoCommit(true);
+ }
+ }
+ else
+ {
+ jdbcConn.setAutoCommit(false);
+ }
+
if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
@@ -178,19 +193,6 @@
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
{
- // Sybase doesn't allow DDL scripts inside transaction
- if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
- {
- if (!jdbcConn.getAutoCommit())
- {
- jdbcConn.setAutoCommit(true);
- }
- }
- else
- {
- jdbcConn.setAutoCommit(false);
- }
-
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
dbCleanerScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
@@ -875,6 +877,7 @@
List<String> cleanScripts = new ArrayList<String>();
List<String> commitScripts = new ArrayList<String>();
+ List<String> rollbackScripts = new ArrayList<String>();
String constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
cleanScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM " + dropCommand(false, constraintName, dialect));
@@ -883,6 +886,7 @@
String constraint =
"CONSTRAINT " + constraintName + " FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
commitScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " + constraint);
+ rollbackScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " + constraint);
cleanScripts
.add("delete from JCR_SVALUE where PROPERTY_ID IN (select ID from JCR_SITEM where CONTAINER_NAME='"
@@ -899,12 +903,12 @@
String deleteItems =
"delete from JCR_SITEM where I_CLASS=1 and CONTAINER_NAME='" + containerName + "' and PARENT_ID=?";
- return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), commitScripts,
+ return new DBCleaner(jdbcConn, cleanScripts, rollbackScripts, commitScripts,
new RecursiveDBCleanHelper(jdbcConn, selectItems, deleteItems));
}
cleanScripts.add("delete from JCR_SITEM where CONTAINER_NAME='" + containerName + "'");
- return new DBCleaner(jdbcConn, new ArrayList<String>(), commitScripts, cleanScripts);
+ return new DBCleaner(jdbcConn, cleanScripts, rollbackScripts, commitScripts);
}
else
{
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java 2011-10-27 15:49:58 UTC (rev 5115)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java 2011-10-28 07:02:26 UTC (rev 5116)
@@ -250,8 +250,8 @@
DBCleaner repositoryDBCleaner = DBCleanService.getRepositoryDBCleaner(jdbcConn, repositoryEntry);
repositoryDBCleaner.executeCleanScripts();
+ repositoryDBCleaner.executeCommitScripts();
jdbcConn.commit();
- repositoryDBCleaner.executeCommitScripts();
// check - does JCR_SITEM become empty
res = statement.executeQuery("select * from JCR_SITEM where ID='" + wsName + id + "'");
@@ -297,7 +297,9 @@
repositoryDBCleaner.executeCleanScripts();
jdbcConn.rollback();
+
repositoryDBCleaner.executeRollbackScripts();
+ jdbcConn.commit();
// check - does JCR_SITEM become empty
res = statement.executeQuery("select * from JCR_SITEM where ID='" + wsName + id + "'");
More information about the exo-jcr-commits
mailing list