Author: areshetnyak
Date: 2010-05-17 10:47:48 -0400 (Mon, 17 May 2010)
New Revision: 2386
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
Log:
EXOJCR-734 : The BackupWorkspaceInitializer was used PersistedPropertyData to restore from
incremental backup.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2010-05-17
10:58:40 UTC (rev 2385)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2010-05-17
14:47:48 UTC (rev 2386)
@@ -27,18 +27,22 @@
import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl;
import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
+import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData;
import org.exoplatform.services.jcr.datamodel.IllegalNameException;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.CacheableWorkspaceDataManager;
+import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
import org.exoplatform.services.jcr.impl.storage.JCRInvalidItemStateException;
import org.exoplatform.services.jcr.impl.storage.JCRItemExistsException;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.impl.util.io.SpoolFile;
import org.exoplatform.services.jcr.observation.ExtendedEvent;
import java.io.EOFException;
@@ -73,6 +77,11 @@
private final String restoreDir;
private FileCleaner fileCleaner;
+
+ /**
+ * Temporary directory;
+ */
+ private final File tempDir;
public BackupWorkspaceInitializer(WorkspaceEntry config, RepositoryEntry repConfig,
CacheableWorkspaceDataManager dataManager, NamespaceRegistryImpl
namespaceRegistry,
@@ -92,6 +101,8 @@
throw new RepositoryException("Can't find full backup file");
else
restorePath = fullBackupPath;
+
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
public NodeData initWorkspace() throws RepositoryException
@@ -371,7 +382,7 @@
int bufferSize = 1024 * 8;
byte[] buf = new byte[bufferSize];
- File tempFile = File.createTempFile("jcr", "tmp");
+ File tempFile = SpoolFile.createTempFile("vdincb" +
System.currentTimeMillis(), ".stmp", tempDir);
FileOutputStream fos = new FileOutputStream(tempFile);
long readBytes = fileSize;
@@ -430,20 +441,23 @@
public void restore() throws IOException
{
+ List<ItemState> listItemState = itemDataChangesLog.getAllStates();
for (int i = 0; i < this.listFixupStream.size(); i++)
{
- List<ItemState> listItemState = itemDataChangesLog.getAllStates();
ItemState itemState =
listItemState.get(listFixupStream.get(i).getItemSateId());
ItemData itemData = itemState.getData();
- TransientPropertyData propertyData = (TransientPropertyData)itemData;
- TransientValueData tvd =
-
(TransientValueData)(propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
+ PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
+ ValueData tvd =
+
(ValueData)(propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
// re-init the value
- tvd.delegate(new TransientValueData(tvd.getOrderNumber(), null, null,
listFile.get(i), fileCleaner, -1,
- null, true));
+ propertyData.getValues().set(listFixupStream.get(i).getValueDataId(),
+ new StreamPersistedValueData(tvd.getOrderNumber(),
listFile.get(i)));
}
+
+ for (int i = 0; i < listFile.size(); i++)
+ fileCleaner.addFile(listFile.get(i));
}
}
Show replies by date