Author: dkatayev
Date: 2010-07-14 03:13:40 -0400 (Wed, 14 Jul 2010)
New Revision: 2781
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java
Log:
EXOJCR-783 query execute wrapped with 'do privileged' block
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java 2010-07-13
16:53:30 UTC (rev 2780)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java 2010-07-14
07:13:40 UTC (rev 2781)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.services.jcr.impl.util.jdbc;
+import org.exoplatform.services.jcr.impl.util.SecurityHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -26,6 +27,7 @@
import java.io.InputStreamReader;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
@@ -205,7 +207,9 @@
{
if (irs.getShort("TYPE") != DatabaseMetaData.tableIndexStatistic
&&
irs.getString("INDEX_NAME").equalsIgnoreCase(indexName))
+ {
res = true; // check for index params matching etc.
+ }
}
return res;
}
@@ -246,7 +250,9 @@
if (isTableExists(conn, tableName))
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("Table is already exists " + tableName);
+ }
return true;
}
}
@@ -262,7 +268,9 @@
if (isTableExists(conn, tableName))
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("View is already exists " + tableName);
+ }
return true;
}
}
@@ -284,7 +292,9 @@
if (isIndexExists(conn, tableName, indexName))
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("Index is already exists " + indexName);
+ }
return true;
}
}
@@ -313,7 +323,9 @@
if (isSequenceExists(conn, sequenceName))
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("Sequence is already exists " + sequenceName);
+ }
return true;
}
}
@@ -328,7 +340,9 @@
if (isTriggerExists(conn, triggerName))
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("Trigger is already exists " + triggerName);
+ }
return true;
}
}
@@ -336,7 +350,9 @@
else
{
if (LOG.isDebugEnabled())
+ {
LOG.debug("Command is not detected for check '" + sql +
"'");
+ }
}
return false;
@@ -383,14 +399,23 @@
if (s.length() > 0)
{
if (isObjectExists(connection, sql = s))
+ {
continue;
+ }
if (LOG.isDebugEnabled())
{
LOG.debug("Execute script: \n[" + sql + "]");
}
-
- st.executeUpdate(sql);
+ final Statement finalSt = st;
+ final String finalSql = sql;
+ SecurityHelper.doPriviledgedSQLExceptionAction(new
PrivilegedExceptionAction<Object>(){
+ public Object run() throws Exception
+ {
+ finalSt.executeUpdate(finalSql);
+ return null;
+ }
+ });
}
}
Show replies by date