Author: tolusha
Date: 2011-01-28 05:28:29 -0500 (Fri, 28 Jan 2011)
New Revision: 3898
Added:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestoreSameConfig.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
Log:
EXOJCR-1078: avoid using Connection as parameter for getDataRestorer() method
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -19,7 +19,6 @@
package org.exoplatform.services.jcr.impl.backup;
import java.io.File;
-import java.sql.Connection;
/**
* @author <a href="mailto:anatoliy.bazko@gmail.com">Anatoliy
Bazko</a>
@@ -50,11 +49,9 @@
*
* @param storageDir
* the directory where backup is stored
- * @param jdbcConn
- * the shared connection to database if need, may be null
* @throws RestoreException
* if any exception occurred
*/
- DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws
BackupException;
+ DataRestor getDataRestorer(File storageDir) throws BackupException;
}
Added:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java
(rev 0)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.backup;
+
+import java.io.File;
+import java.sql.Connection;
+
+/**
+ * @author <a href="mailto:anatoliy.bazko@gmail.com">Anatoliy
Bazko</a>
+ * @version $Id: Backupable.java 34360 2009-07-22 23:58:59Z tolusha $
+ */
+public interface JdbcBackupable extends Backupable
+{
+
+ /**
+ * Get data restorer to support atomic restore.
+ *
+ * @param storageDir
+ * the directory where backup is stored
+ * @param jdbcConn
+ * the connection to database
+ * @throws RestoreException
+ * if any exception occurred
+ */
+ DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws
BackupException;
+
+}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -20,7 +20,6 @@
import org.exoplatform.commons.utils.PrivilegedFileHelper;
import org.exoplatform.commons.utils.PrivilegedSystemHelper;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions;
@@ -43,7 +42,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -55,10 +53,7 @@
import java.util.Map;
import java.util.Map.Entry;
-import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
-import javax.sql.DataSource;
/**
* Created by The eXo Platform SAS.
@@ -126,31 +121,7 @@
WorkspaceEntry wsConfig, FileCleaner fileCleaner) throws NamingException,
SQLException,
RepositoryConfigurationException
{
- String dsName =
wsConfig.getContainer().getParameterValue(JDBCWorkspaceDataContainer.SOURCE_NAME);
-
- if (jdbcConn == null)
- {
- final DataSource ds = (DataSource)new InitialContext().lookup(dsName);
- if (ds == null)
- {
- throw new NameNotFoundException("Data source " + dsName + "
not found");
- }
-
- this.jdbcConn = SecurityHelper.doPrivilegedSQLExceptionAction(new
PrivilegedExceptionAction<Connection>()
- {
- public Connection run() throws Exception
- {
- return ds.getConnection();
-
- }
- });
- this.jdbcConn.setAutoCommit(false);
- }
- else
- {
- this.jdbcConn = jdbcConn;
- }
-
+ this.jdbcConn = jdbcConn;
this.fileCleaner = fileCleaner;
this.maxBufferSize =
wsConfig.getContainer().getParameterInteger(JDBCWorkspaceDataContainer.MAXBUFFERSIZE_PROP,
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -64,7 +64,6 @@
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -855,7 +854,7 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws
BackupException
+ public DataRestor getDataRestorer(File storageDir) throws BackupException
{
List<LockData> locks = new ArrayList<LockData>();
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -76,7 +76,6 @@
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
-import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -1206,7 +1205,7 @@
/**
* {@inheritDoc}}
*/
- public DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws
BackupException
+ public DataRestor getDataRestorer(File storageDir) throws BackupException
{
try
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -54,7 +54,6 @@
import java.io.IOException;
import java.io.Serializable;
import java.security.PrivilegedExceptionAction;
-import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -1155,7 +1154,7 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws
BackupException
+ public DataRestor getDataRestorer(File storageDir) throws BackupException
{
return new DataRestor()
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -58,7 +58,6 @@
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
-import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -1581,7 +1580,7 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws
BackupException
+ public DataRestor getDataRestorer(File storageDir) throws BackupException
{
return new DataRestor()
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -29,9 +29,9 @@
import org.exoplatform.services.jcr.dataflow.serialization.ObjectWriter;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
-import org.exoplatform.services.jcr.impl.backup.Backupable;
import org.exoplatform.services.jcr.impl.backup.ComplexDataRestor;
import org.exoplatform.services.jcr.impl.backup.DataRestor;
+import org.exoplatform.services.jcr.impl.backup.JdbcBackupable;
import org.exoplatform.services.jcr.impl.backup.rdbms.DBBackup;
import org.exoplatform.services.jcr.impl.backup.rdbms.DBRestor;
import org.exoplatform.services.jcr.impl.backup.rdbms.DirectoryRestor;
@@ -92,7 +92,7 @@
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
Nedonosko</a>
* @version $Id:GenericWorkspaceDataContainer.java 13433 2007-03-15 16:07:23Z peterit $
*/
-public class JDBCWorkspaceDataContainer extends WorkspaceDataContainerBase implements
Startable, Backupable
+public class JDBCWorkspaceDataContainer extends WorkspaceDataContainerBase implements
Startable, JdbcBackupable
{
protected static final Log LOG =
ExoLogger.getLogger("exo.jcr.component.core.JDBCWorkspaceDataContainer");
@@ -1379,4 +1379,42 @@
}
}
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public DataRestor getDataRestorer(File storageDir) throws BackupException
+ {
+ try
+ {
+ final DataSource ds = (DataSource)new InitialContext().lookup(dbSourceName);
+
+ if (ds != null)
+ {
+ Connection jdbcConn =
+ SecurityHelper.doPrivilegedSQLExceptionAction(new
PrivilegedExceptionAction<Connection>()
+ {
+ public Connection run() throws Exception
+ {
+ return ds.getConnection();
+ }
+ });
+ jdbcConn.setAutoCommit(false);
+
+ return getDataRestorer(storageDir, jdbcConn);
+ }
+ else
+ {
+ throw new NameNotFoundException("Data source " + dbSourceName +
" not found");
+ }
+ }
+ catch (SQLException e)
+ {
+ throw new BackupException(e);
+ }
+ catch (NamingException e)
+ {
+ throw new BackupException(e);
+ }
+ }
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -28,6 +28,7 @@
import org.exoplatform.services.jcr.impl.backup.Backupable;
import org.exoplatform.services.jcr.impl.backup.DataRestor;
import org.exoplatform.services.jcr.impl.backup.JCRRestor;
+import org.exoplatform.services.jcr.impl.backup.JdbcBackupable;
import org.exoplatform.services.jcr.impl.backup.ResumeException;
import org.exoplatform.services.jcr.impl.backup.Suspendable;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
@@ -132,7 +133,14 @@
for (Backupable component : backupable)
{
- dataRestorer.add(component.getDataRestorer(fullBackupDir, jdbcConn));
+ if (component instanceof JdbcBackupable && jdbcConn != null)
+ {
+
dataRestorer.add(((JdbcBackupable)component).getDataRestorer(fullBackupDir, jdbcConn));
+ }
+ else
+ {
+ dataRestorer.add(component.getDataRestorer(fullBackupDir));
+ }
}
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestoreSameConfig.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestoreSameConfig.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestoreSameConfig.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -96,7 +96,7 @@
for (Backupable component : backupable)
{
File fullBackupDir = JCRRestor.getFullBackupFile(storageDir);
- dataRestorer.add(component.getDataRestorer(fullBackupDir, null));
+ dataRestorer.add(component.getDataRestorer(fullBackupDir));
}
for (DataRestor restorer : dataRestorer)
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-01-28
09:45:42 UTC (rev 3897)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-01-28
10:28:29 UTC (rev 3898)
@@ -135,7 +135,7 @@
// restore all components
for (Backupable component : backupableComponents)
{
- dataRestorers.add(component.getDataRestorer(new File(restorePath), null));
+ dataRestorers.add(component.getDataRestorer(new File(restorePath)));
}
for (DataRestor restorer : dataRestorers)