From do-not-reply at jboss.org Fri Jan 28 05:28:29 2011 Content-Type: multipart/mixed; boundary="===============3732289991702189960==" MIME-Version: 1.0 From: do-not-reply at jboss.org To: exo-jcr-commits at lists.jboss.org Subject: [exo-jcr-commits] exo-jcr SVN: r3898 - in jcr/trunk: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms and 7 other directories. Date: Fri, 28 Jan 2011 05:28:29 -0500 Message-ID: <201101281028.p0SASTQJ003876@svn01.web.mwc.hst.phx2.redhat.com> --===============3732289991702189960== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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/j= cr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/j= cr/ext/backup/impl/JobExistedWorkspaceRestoreSameConfig.java jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/j= cr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java Log: EXOJCR-1078: avoid using Connection as parameter for getDataRestorer() meth= od Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/se= rvices/jcr/impl/backup/Backupable.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 Anatoliy Bazko @@ -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/servi= ces/jcr/impl/backup/JdbcBackupable.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 Anatoliy Bazko + * @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/se= rvices/jcr/impl/backup/rdbms/DBRestor.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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.RepositoryConfigurationExceptio= n; 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 NamingExcep= tion, SQLException, RepositoryConfigurationException { - String dsName =3D wsConfig.getContainer().getParameterValue(JDBCWork= spaceDataContainer.SOURCE_NAME); - - if (jdbcConn =3D=3D null) - { - final DataSource ds =3D (DataSource)new InitialContext().lookup(d= sName); - if (ds =3D=3D null) - { - throw new NameNotFoundException("Data source " + dsName + " no= t found"); - } - - this.jdbcConn =3D SecurityHelper.doPrivilegedSQLExceptionAction(n= ew PrivilegedExceptionAction() - { - public Connection run() throws Exception - { - return ds.getConnection(); - - } - }); - this.jdbcConn.setAutoCommit(false); - } - else - { - this.jdbcConn =3D jdbcConn; - } - + this.jdbcConn =3D jdbcConn; this.fileCleaner =3D fileCleaner; this.maxBufferSize =3D wsConfig.getContainer().getParameterInteger(JDBCWorkspaceDataCont= ainer.MAXBUFFERSIZE_PROP, Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/se= rvices/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 BackupExcepti= on { List locks =3D new ArrayList(); = Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/se= rvices/jcr/impl/core/query/SearchManager.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 BackupExcepti= on { try { Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/se= rvices/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCac= he.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services= /jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.jav= a 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.jav= a 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 BackupExcepti= on { return new DataRestor() { Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/se= rvices/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCa= che.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services= /jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.ja= va 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.ja= va 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 BackupExcepti= on { return new DataRestor() { Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/se= rvices/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 Peter N= edonosko * @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 =3D ExoLogger.getLogger("exo.jcr.compone= nt.core.JDBCWorkspaceDataContainer"); @@ -1379,4 +1379,42 @@ } } } + + /** + * {@inheritDoc} + */ + public DataRestor getDataRestorer(File storageDir) throws BackupExcepti= on + { + try + { + final DataSource ds =3D (DataSource)new InitialContext().lookup(d= bSourceName); + + if (ds !=3D null) + { + Connection jdbcConn =3D + SecurityHelper.doPrivilegedSQLExceptionAction(new Privilege= dExceptionAction() + { + 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/ser= vices/jcr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/= jcr/ext/backup/impl/JobExistedRepositoryRestoreSameConfig.java 2011-01-28 0= 9: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 1= 0: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.WorkspacePers= istentDataManager; @@ -132,7 +133,14 @@ = for (Backupable component : backupable) { - dataRestorer.add(component.getDataRestorer(fullBackupDir, j= dbcConn)); + if (component instanceof JdbcBackupable && jdbcConn !=3D nu= ll) + { + dataRestorer.add(((JdbcBackupable)component).getDataRest= orer(fullBackupDir, jdbcConn)); + } + else + { + dataRestorer.add(component.getDataRestorer(fullBackupDir= )); + } } } = Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/ser= vices/jcr/ext/backup/impl/JobExistedWorkspaceRestoreSameConfig.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 =3D 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/ser= vices/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/= jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-01-28 09:45:4= 2 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:2= 9 UTC (rev 3898) @@ -135,7 +135,7 @@ // restore all components for (Backupable component : backupableComponents) { - dataRestorers.add(component.getDataRestorer(new File(restorePa= th), null)); + dataRestorers.add(component.getDataRestorer(new File(restorePa= th))); } = for (DataRestor restorer : dataRestorers) --===============3732289991702189960==--