Mario Danic 8 жил өмнө
parent
commit
e996a3dcc9

+ 15 - 0
src/com/owncloud/android/datamodel/SerializablePair.java

@@ -23,6 +23,7 @@ import android.support.v4.util.Pair;
 
 import org.apache.commons.io.monitor.FileEntry;
 
+import java.io.IOException;
 import java.io.Serializable;
 
 /**
@@ -30,12 +31,26 @@ import java.io.Serializable;
  */
 
 public class SerializablePair<S, F> implements Serializable {
+    private static final long serialVersionUID = -1710182118966395715L;
     private transient Pair pair = null;
 
     public SerializablePair(SyncedFolder key, FileEntry value) {
         this.pair = new Pair(key, value);
     }
 
+    private void writeObject(java.io.ObjectOutputStream stream)
+            throws IOException {
+        stream.writeObject(pair.first);
+        stream.writeObject(pair.second);
+    }
+
+    private void readObject(java.io.ObjectInputStream stream)
+            throws IOException, ClassNotFoundException {
+        SyncedFolder syncedFolder = (SyncedFolder) stream.readObject();
+        FileEntry fileEntry = (FileEntry) stream.readObject();
+        pair = new Pair(syncedFolder, fileEntry);
+    }
+
     @Override
     public String toString() {
         return pair.toString();

+ 4 - 1
src/com/owncloud/android/datamodel/SyncedFolder.java

@@ -21,11 +21,14 @@
 
 package com.owncloud.android.datamodel;
 
+import java.io.Serializable;
+
 /**
  * Synced folder entity containing all information per synced folder.
  */
-public class SyncedFolder {
+public class SyncedFolder implements Serializable{
     public static final long UNPERSISTED_ID = Long.MIN_VALUE;
+    private static final long serialVersionUID = -793476118299906429L;
     private long id = UNPERSISTED_ID;
     private String localPath;
     private String remotePath;

+ 10 - 1
src/com/owncloud/android/services/observer/SyncedFolderObserverService.java

@@ -85,7 +85,15 @@ public class SyncedFolderObserverService extends Service {
             try {
                 fis = new FileInputStream(file);
                 ObjectInputStream ois = new ObjectInputStream(fis);
-                pairArrayList = (CopyOnWriteArrayList<SerializablePair<SyncedFolder, FileEntry>>)ois.readObject();
+                boolean cont = true;
+                while(cont){
+                    Object obj = ois.readObject();
+                    if(obj != null)
+                        pairArrayList.add((SerializablePair<SyncedFolder, FileEntry>) obj);
+                    else
+                        cont = false;
+                }
+
                 readPerstistanceEntries = true;
             } catch (FileNotFoundException e) {
                 Log_OC.d(TAG, "Failed with FileNotFound while reading persistence file");
@@ -182,6 +190,7 @@ public class SyncedFolderObserverService extends Service {
             Log_OC.d(TAG, "Failed writing to nc_sync_persistance file via IOException");
         }
 
+
     }
 
     @Override