[exo-jcr-commits] exo-jcr SVN: r2387 - jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon May 17 10:50:05 EDT 2010
Author: areshetnyak
Date: 2010-05-17 10:50:05 -0400 (Mon, 17 May 2010)
New Revision: 2387
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java
Log:
EXOJCR-734 : The problem with "binary values was not stored in incremental backup" was fixed.
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java 2010-05-17 14:47:48 UTC (rev 2386)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java 2010-05-17 14:50:05 UTC (rev 2387)
@@ -18,8 +18,30 @@
*/
package org.exoplatform.services.jcr.ext.backup.impl;
+import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
import org.apache.commons.collections.map.HashedMap;
-import org.bouncycastle.jce.interfaces.BCKeyStore;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.PropertiesParam;
import org.exoplatform.services.jcr.RepositoryService;
@@ -59,6 +81,7 @@
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 org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
@@ -68,29 +91,6 @@
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-import java.io.ByteArrayOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jcr.PathNotFoundException;
-import javax.jcr.RepositoryException;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
/**
* Created by The eXo Platform SAS .<br/>
*
@@ -162,6 +162,11 @@
private final WorkspaceBackupAutoStopper workspaceBackupStopper;
private final RepositoryBackupAutoStopper repositoryBackupStopper;
+
+ /**
+ * Temporary directory;
+ */
+ private final File tempDir;
class MessagesListener implements BackupJobListener
{
@@ -392,6 +397,7 @@
this.repoService = repoService;
this.registryService = registryService;
this.initParams = initParams;
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
currentBackups = Collections.synchronizedSet(new HashSet<BackupChain>());
@@ -1021,7 +1027,7 @@
int bufferSize = /* 8191 */1024 * 8;
byte[] buf = new byte[bufferSize];
- File tempFile = File.createTempFile("" + System.currentTimeMillis(), "" + System.nanoTime());
+ File tempFile = SpoolFile.createTempFile("" + System.currentTimeMillis(), ".stmp", tempDir);
FileOutputStream fos = new FileOutputStream(tempFile);
long readBytes = fileSize;
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java 2010-05-17 14:47:48 UTC (rev 2386)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java 2010-05-17 14:50:05 UTC (rev 2387)
@@ -18,21 +18,9 @@
*/
package org.exoplatform.services.jcr.ext.backup.impl;
-import org.exoplatform.services.jcr.dataflow.ItemState;
-import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
-import org.exoplatform.services.jcr.datamodel.ItemData;
-import org.exoplatform.services.jcr.ext.replication.FixupStream;
-import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
-import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-import org.exoplatform.services.jcr.util.IdGenerator;
-import org.exoplatform.services.log.ExoLogger;
-import org.exoplatform.services.log.Log;
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
@@ -41,6 +29,20 @@
import java.util.ArrayList;
import java.util.List;
+import org.exoplatform.services.jcr.dataflow.ItemState;
+import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
+import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData;
+import org.exoplatform.services.jcr.datamodel.ItemData;
+import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.ext.replication.FixupStream;
+import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
+import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.impl.util.io.SpoolFile;
+import org.exoplatform.services.jcr.util.IdGenerator;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
/**
* Created by The eXo Platform SAS.
*
@@ -132,6 +134,11 @@
private byte[] data;
/**
+ * Temporary directory;
+ */
+ private final File tempDir;
+
+ /**
* PendingChangesLog constructor.
*
* @param itemDataChangesLog
@@ -150,6 +157,7 @@
listFile = new ArrayList<File>();
identifier = IdGenerator.generate();
this.fileCleaner = fileCleaner;
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -177,6 +185,7 @@
this.identifier = identifier;
containerType = type;
this.fileCleaner = fileCleaner;
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -191,6 +200,7 @@
{
this.identifier = identifier;
data = new byte[dataLength];
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -212,6 +222,7 @@
this.listFixupStream = listFixupStreams;
this.listFile = listFiles;
this.fileCleaner = fileCleaner;
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -304,9 +315,9 @@
{
ItemData itemData = itemState.getData();
- if (itemData instanceof TransientPropertyData)
+ if (itemData instanceof PersistedPropertyData)
{
- TransientPropertyData propertyData = (TransientPropertyData)itemData;
+ PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
if ((propertyData.getValues() != null))
for (int j = 0; j < propertyData.getValues().size(); j++)
if (!(propertyData.getValues().get(j).isByteArray()))
@@ -456,7 +467,7 @@
{
this.getFixupStreams().add(fs);
- File f = File.createTempFile("tempFile" + IdGenerator.generate(), ".tmp");
+ File f = SpoolFile.createTempFile("tempFile" + IdGenerator.generate(), ".tmp", tempDir);
this.getListFile().add(f);
this.getListRandomAccessFiles().add(new RandomAccessFile(f, "rw"));
@@ -479,13 +490,13 @@
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)));
}
if (listRandomAccessFile != null)
More information about the exo-jcr-commits
mailing list