[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