[exo-jcr-commits] exo-jcr SVN: r4608 - in jcr/trunk/exo.jcr.component.core: src/main/java/org/exoplatform/services/jcr/dataflow/serialization and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Jul 7 04:29:27 EDT 2011


Author: nzamosenchuk
Date: 2011-07-07 04:29:27 -0400 (Thu, 07 Jul 2011)
New Revision: 4608

Modified:
   jcr/trunk/exo.jcr.component.core/pom.xml
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/JcrImplSerializationBaseTest.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationStream.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationVersionRestore.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TesterItemsPersistenceListener.java
Log:
EXOJCR-1407 : Checks in serialization tests should be performed synchronously with Session.Save()

Modified: jcr/trunk/exo.jcr.component.core/pom.xml
===================================================================
--- jcr/trunk/exo.jcr.component.core/pom.xml	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/pom.xml	2011-07-07 08:29:27 UTC (rev 4608)
@@ -412,8 +412,6 @@
                   <exclude>org/exoplatform/services/jcr/**/api/TestAll.java</exclude>
                   <exclude>org/exoplatform/services/jcr/**/impl/**/Base*.java</exclude>
                   <exclude>org/exoplatform/services/jcr/**/usecases/BaseUsecasesTest.java</exclude>
-                  <exclude>org/exoplatform/services/jcr/**/impl/**/TestJCRSerializationStream.java</exclude>
-                  <exclude>org/exoplatform/services/jcr/**/impl/**/TestJCRSerializationVersionRestore.java</exclude>
                   <exclude>org/exoplatform/services/jcr/usecases/common/RemoveSameNameSiblingUnfixedTest.java</exclude>
                   <exclude>org/exoplatform/services/jcr/**/impl/**/SQLBenchmarkTest.java</exclude>
                   <!-- Implementation Specific Excludes -->
@@ -753,8 +751,6 @@
                         <exclude>org/exoplatform/services/jcr/**/api/TestAll.java</exclude>
                         <exclude>org/exoplatform/services/jcr/**/impl/**/Base*.java</exclude>
                         <exclude>org/exoplatform/services/jcr/**/usecases/BaseUsecasesTest.java</exclude>
-                        <exclude>org/exoplatform/services/jcr/**/impl/**/TestJCRSerializationStream.java</exclude>
-                        <exclude>org/exoplatform/services/jcr/**/impl/**/TestJCRSerializationVersionRestore.java</exclude>
                         <exclude>org/exoplatform/services/jcr/usecases/common/RemoveSameNameSiblingUnfixedTest.java</exclude>
                         <exclude>org/exoplatform/services/jcr/**/impl/**/SQLBenchmarkTest.java</exclude>
                         <!-- From TCK -->

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -89,6 +89,11 @@
    public static final int PERSISTED_VALUE_DATA = 11;
 
    /**
+    * Null file
+    */
+   public static final int NULL_FILE = -1;
+
+   /**
     * Null data.
     */
    public static final byte NULL_DATA = 0;

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -93,7 +93,9 @@
       // read id
       int key;
       if ((key = in.readInt()) != SerializationConstants.PERSISTED_VALUE_DATA)
+      {
          throw new UnknownClassIdException("There is unexpected class [" + key + "]");
+      }
 
       int orderNumber = in.readInt();
 
@@ -115,8 +117,12 @@
          SerializationSpoolFile sf = holder.get(id);
          if (sf == null)
          {
+            // Deleted ItemState usecase 
+            if (length == SerializationConstants.NULL_FILE)
+            {
+               return new StreamPersistedValueData(orderNumber, (SerializationSpoolFile)null);
+            }
             sf = new SerializationSpoolFile(tempDirectory, id, holder);
-            // TODO optimize writeToFile - use channels or streams
             writeToFile(in, sf, length);
             holder.put(id, sf);
             return new StreamPersistedValueData(orderNumber, sf);
@@ -130,7 +136,9 @@
 
                // skip data in input stream
                if (in.skip(length) != length)
+               {
                   throw new IOException("Content isn't skipped correctly.");
+               }
 
                return vd;
             }

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -26,7 +26,6 @@
 import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
 import org.exoplatform.services.jcr.util.IdGenerator;
 
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -74,14 +73,16 @@
 
          if (streamed.getFile() == null && vd instanceof StreamPersistedValueData)
          {
-            in = PrivilegedFileHelper.fileInputStream(((StreamPersistedValueData)vd).getTempFile());
+            if (((StreamPersistedValueData)vd).getTempFile() != null)
+            {
+               in = PrivilegedFileHelper.fileInputStream(((StreamPersistedValueData)vd).getTempFile());
+            }
          }
          else
          {
             in = streamed.getAsStream();
          }
 
-         // TODO optimize it, use channels
          if (streamed.getFile() instanceof SerializationSpoolFile)
          {
             SerializationSpoolFile ssf = (SerializationSpoolFile)streamed.getFile();
@@ -94,17 +95,27 @@
             String id = IdGenerator.generate();
             out.writeString(id);
 
-            out.writeLong(vd.getLength());
-            try
+            if (in == null)
             {
-               byte[] buf = new byte[SerializationConstants.INTERNAL_BUFFER_SIZE];
-               int l = 0;
-               while ((l = in.read(buf)) >= 0)
-                  out.write(buf, 0, l);
+               // Deleted state usecase
+               out.writeLong(SerializationConstants.NULL_FILE);
             }
-            finally
+            else
             {
-               in.close();
+               out.writeLong(vd.getLength());
+               try
+               {
+                  byte[] buf = new byte[SerializationConstants.INTERNAL_BUFFER_SIZE];
+                  int l = 0;
+                  while ((l = in.read(buf)) >= 0)
+                  {
+                     out.write(buf, 0, l);
+                  }
+               }
+               finally
+               {
+                  in.close();
+               }
             }
          }
       }

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/JcrImplSerializationBaseTest.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/JcrImplSerializationBaseTest.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/JcrImplSerializationBaseTest.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -18,10 +18,21 @@
  */
 package org.exoplatform.services.jcr.impl.dataflow.serialization;
 
+import org.exoplatform.services.jcr.JcrImplBaseTest;
+import org.exoplatform.services.jcr.dataflow.ChangesLogIterator;
+import org.exoplatform.services.jcr.dataflow.ItemState;
+import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
+import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
+import org.exoplatform.services.jcr.dataflow.serialization.UnknownClassIdException;
+import org.exoplatform.services.jcr.datamodel.ItemData;
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.impl.dataflow.persistent.FilePersistedValueData;
+import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
+
 import java.io.EOFException;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -35,19 +46,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.exoplatform.services.jcr.JcrImplBaseTest;
-import org.exoplatform.services.jcr.dataflow.ChangesLogIterator;
-import org.exoplatform.services.jcr.dataflow.ItemState;
-import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
-import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
-import org.exoplatform.services.jcr.dataflow.serialization.UnknownClassIdException;
-import org.exoplatform.services.jcr.datamodel.ItemData;
-import org.exoplatform.services.jcr.datamodel.PropertyData;
-import org.exoplatform.services.jcr.datamodel.ValueData;
-import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
-import org.exoplatform.services.jcr.impl.storage.value.fs.operations.ValueFileIOHelper;
-import org.exoplatform.services.jcr.storage.value.ValueIOChannel;
-
 /**
  * Created by The eXo Platform SAS. <br/>Date: 16.02.2009
  * 
@@ -86,14 +84,43 @@
 
             List<ValueData> expValDat = expProp.getValues();
             List<ValueData> elemValDat = elemProp.getValues();
-            assertEquals(expValDat.size(), elemValDat.size());
-            for (int j = 0; j < expValDat.size(); j++)
+            // Both value data are null 
+            if (expValDat != null && elemValDat != null)
             {
-               assertTrue(java.util.Arrays
-                  .equals(expValDat.get(j).getAsByteArray(), elemValDat.get(j).getAsByteArray()));
+               assertEquals(expValDat.size(), elemValDat.size());
+               for (int j = 0; j < expValDat.size(); j++)
+               {
 
-               // check is received property values ReplicableValueData
-               // assertTrue(elemValDat.get(j) instanceof ReplicableValueData);
+                  // are of the same class
+                  assertEquals(expValDat.get(j).getClass(), elemValDat.get(j).getClass());
+                  //
+                  if (expValDat.get(j) instanceof FilePersistedValueData)
+                  {
+                     // if files in both instances are null
+                     Boolean nullFiles =
+                        ((FilePersistedValueData)expValDat.get(j)).getFile() == null
+                           && ((FilePersistedValueData)elemValDat.get(j)).getFile() == null;
+                     // if there are instances of StreamPersistedValueData
+                     if (expValDat.get(j) instanceof StreamPersistedValueData)
+                     {
+                        // and they both have null spool files
+                        nullFiles &=
+                           ((StreamPersistedValueData)expValDat.get(j)).getTempFile() == null
+                              && ((StreamPersistedValueData)elemValDat.get(j)).getTempFile() == null;
+                     }
+                     if (nullFiles)
+                     {
+                        // Both value data are equals
+                        continue;
+                     }
+                  }
+
+                  assertTrue(java.util.Arrays.equals(expValDat.get(j).getAsByteArray(), elemValDat.get(j)
+                     .getAsByteArray()));
+
+                  // check is received property values ReplicableValueData
+                  // assertTrue(elemValDat.get(j) instanceof ReplicableValueData);
+               }
             }
          }
       }
@@ -101,6 +128,20 @@
 
    }
 
+   protected void checkResults(List<TransactionChangesLog> srcLog) throws Exception
+   {
+      File jcrfile = serializeLogs(srcLog);
+
+      List<TransactionChangesLog> destLog = deSerializeLogs(jcrfile);
+
+      assertEquals(srcLog.size(), destLog.size());
+
+      for (int i = 0; i < srcLog.size(); i++)
+      {
+         checkIterator(srcLog.get(i).getAllStates().iterator(), destLog.get(i).getAllStates().iterator());
+      }
+   }
+
    protected File serializeLogs(List<TransactionChangesLog> logs) throws IOException, UnknownClassIdException
    {
       File jcrfile = File.createTempFile("jcr", "test");
@@ -129,7 +170,7 @@
          while (true)
          {
             TransactionChangesLog obj =
-               (TransactionChangesLog)(new TransactionChangesLogReader(fileCleaner, maxBufferSize, holder)).read(jcrin);
+               (new TransactionChangesLogReader(fileCleaner, maxBufferSize, holder)).read(jcrin);
             // TransactionChangesLog obj = new TransactionChangesLog();
             // obj.readObject(jcrin);
             readed.add(obj);
@@ -139,8 +180,7 @@
       {
          // ok
       }
-      
-      
+
       //Imitation of save.
       imitationSave(readed);
 
@@ -159,35 +199,41 @@
       for (TransactionChangesLog tLog : readed)
       {
          ChangesLogIterator it = tLog.getLogIterator();
-         
-         while (it.hasNextLog()) 
+
+         while (it.hasNextLog())
          {
             PlainChangesLog pLog = it.nextLog();
-            
+
             for (ItemState state : pLog.getAllStates())
             {
                ItemData itemData = state.getData();
-               
+
                if (!itemData.isNode())
                {
                   PropertyData propData = (PropertyData)itemData;
-                  
-                  for(ValueData valueData : propData.getValues())
+                  if (propData.getValues() != null)
                   {
-                     if (valueData instanceof StreamPersistedValueData) {
-                        // imitation of JCR save
-                        if (((StreamPersistedValueData) valueData).getTempFile() != null)
+                     for (ValueData valueData : propData.getValues())
+                     {
+                        if (valueData instanceof StreamPersistedValueData)
                         {
-                         ((StreamPersistedValueData) valueData).setPersistedFile(((StreamPersistedValueData) valueData).getTempFile());
+                           // imitation of JCR save
+                           if (((StreamPersistedValueData)valueData).getTempFile() != null)
+                           {
+                              ((StreamPersistedValueData)valueData)
+                                 .setPersistedFile(((StreamPersistedValueData)valueData).getTempFile());
+                           }
+                           else
+                           {
+                              File file = File.createTempFile("tempFile", "tmp");
+                              file.deleteOnExit();
+                              if (((StreamPersistedValueData)valueData).getStream() != null)
+                              {
+                                 copy(((StreamPersistedValueData)valueData).getStream(), new FileOutputStream(file));
+                                 ((StreamPersistedValueData)valueData).setPersistedFile(file);
+                              }
+                           }
                         }
-                        else
-                        {
-                           File file = File.createTempFile("tempFile", "tmp");
-                           file.deleteOnExit();
-                           
-                           copy(((StreamPersistedValueData) valueData).getStream(), new FileOutputStream(file));
-                           ((StreamPersistedValueData) valueData).setPersistedFile(file);
-                        }
                      }
                   }
                }
@@ -195,7 +241,7 @@
          }
       }
    }
-   
+
    protected long copy(InputStream in, OutputStream out) throws IOException
    {
       // compare classes as in Java6 Channels.newChannel(), Java5 has a bug in newChannel().
@@ -243,7 +289,9 @@
          }
 
          if (outFile)
+         {
             ((FileChannel)outch).force(true); // force all data to FS
+         }
 
          return size;
       }

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationStream.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationStream.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationStream.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -18,12 +18,9 @@
  */
 package org.exoplatform.services.jcr.impl.dataflow.serialization;
 
-import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.util.Calendar;
-import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.Value;
@@ -54,6 +51,7 @@
       contentNode.setProperty("jcr:mimeType", "application/octet-stream");
       contentNode.setProperty("jcr:lastModified", session.getValueFactory().createValue(Calendar.getInstance()));
       session.save();
+      checkResults(pl.getAndReset());
 
       test.setProperty("creator", new String[]{"Creator 1", "Creator 2", "Creator 3"});
 
@@ -67,21 +65,15 @@
       test.setProperty("language", new String[]{"language 1", "language 2", "language3", "language 4", "language5"});
 
       session.save();
+      checkResults(pl.getAndReset());
 
       // delete
       Node srcParent = test.getParent();
       srcParent.remove();
       session.save();
 
-      List<TransactionChangesLog> srcLog = pl.pushChanges();
-
-      File jcrfile = super.serializeLogs(srcLog);
-
-      List<TransactionChangesLog> destLog = super.deSerializeLogs(jcrfile);
-
-      assertEquals(srcLog.size(), destLog.size());
-
-      for (int i = 0; i < srcLog.size(); i++)
-         checkIterator(srcLog.get(i).getAllStates().iterator(), destLog.get(i).getAllStates().iterator());
+      checkResults(pl.getAndReset());
+      // unregister listener
+      pl.pushChanges();
    }
 }

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationVersionRestore.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationVersionRestore.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TestJCRSerializationVersionRestore.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -18,13 +18,10 @@
  */
 package org.exoplatform.services.jcr.impl.dataflow.serialization;
 
-import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.util.Calendar;
-import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.version.Version;
@@ -49,24 +46,36 @@
       srcVersionNode.addMixin("mix:versionable");
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersionNode.checkin();
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersionNode.checkout();
       srcVersionNode.setProperty("jcr:data", "version 1");
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersionNode.checkin();
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersionNode.checkout();
       srcVersionNode.setProperty("jcr:data", "version 2");
       session.save();
 
+      checkResults(pl.getAndReset());
+
       Version baseVersion = srcVersionNode.getBaseVersion();
       srcVersionNode.restore(baseVersion, true);
       session.save();
 
+      checkResults(pl.getAndReset());
+
       Version baseVersion1 = srcVersionNode.getBaseVersion();
       Version[] predesessors = baseVersion1.getPredecessors();
       Version restoreToBaseVersion = predesessors[0];
@@ -74,21 +83,15 @@
       srcVersionNode.restore(restoreToBaseVersion, true);
       session.save();
 
-      List<TransactionChangesLog> srcLog = pl.pushChanges();
-
-      File jcrfile = super.serializeLogs(srcLog);
-
-      List<TransactionChangesLog> destLog = super.deSerializeLogs(jcrfile);
-
-      assertEquals(srcLog.size(), destLog.size());
-
-      for (int i = 0; i < srcLog.size(); i++)
-         checkIterator(srcLog.get(i).getAllStates().iterator(), destLog.get(i).getAllStates().iterator());
+      checkResults(pl.getAndReset());
+      // unregister listener
+      pl.pushChanges();
    }
 
    public void testBigFileRestore() throws Exception
    {
       TesterItemsPersistenceListener pl = new TesterItemsPersistenceListener(this.session);
+      //List<TransactionChangesLog> srcLog = new ArrayList<TransactionChangesLog>();
 
       File tempFile = File.createTempFile("tempFile", "doc");
       File tempFile2 = File.createTempFile("tempFile", "doc");
@@ -129,25 +132,37 @@
 
       session.save();
 
+      checkResults(pl.getAndReset());
+
       Node srcVersion = root.getNode("nt_file_node");
       srcVersion.checkin();
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersion.checkout();
       srcVersionNode.getNode("jcr:content").setProperty("jcr:data", new FileInputStream(tempFile2));
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersion.checkin();
       session.save();
 
+      checkResults(pl.getAndReset());
+
       srcVersion.checkout();
       srcVersionNode.getNode("jcr:content").setProperty("jcr:data", new FileInputStream(tempFile3));
       session.save();
 
+      checkResults(pl.getAndReset());
+
       Version baseVersion = srcVersion.getBaseVersion();
       srcVersion.restore(baseVersion, true);
       session.save();
 
+      checkResults(pl.getAndReset());
+
       Version baseVersion1 = srcVersion.getBaseVersion();
       Version[] predesessors = baseVersion1.getPredecessors();
       Version restoreToBaseVersion = predesessors[0];
@@ -155,6 +170,8 @@
       srcVersion.restore(restoreToBaseVersion, true);
       session.save();
 
+      checkResults(pl.getAndReset());
+
       Version baseVersion2 = srcVersion.getBaseVersion();
       Version[] predesessors2 = baseVersion2.getSuccessors();
       Version restoreToBaseVersion_2 = predesessors2[0];
@@ -162,16 +179,9 @@
       srcVersion.restore(restoreToBaseVersion_2, true);
       session.save();
 
-      List<TransactionChangesLog> srcLog = pl.pushChanges();
-
-      File jcrfile = super.serializeLogs(srcLog);
-
-      List<TransactionChangesLog> destLog = super.deSerializeLogs(jcrfile);
-
-      assertEquals(srcLog.size(), destLog.size());
-
-      for (int i = 0; i < srcLog.size(); i++)
-         checkIterator(srcLog.get(i).getAllStates().iterator(), destLog.get(i).getAllStates().iterator());
+      checkResults(pl.getAndReset());
+      // unregister listener
+      pl.pushChanges();
    }
 
 }

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TesterItemsPersistenceListener.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TesterItemsPersistenceListener.java	2011-07-06 14:14:54 UTC (rev 4607)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/serialization/TesterItemsPersistenceListener.java	2011-07-07 08:29:27 UTC (rev 4608)
@@ -70,6 +70,18 @@
       return logsList;
    }
 
+   /**
+    * Returns collected changes and resets listener without unregistering
+    *
+    * @return List of TransactionChangesLog
+    */
+   public List<TransactionChangesLog> getAndReset()
+   {
+      List<TransactionChangesLog> logs = new ArrayList<TransactionChangesLog>(logsList);
+      logsList.clear();
+      return logs;
+   }
+
    public List<TransactionChangesLog> getCurrentLogList()
    {
       return logsList;



More information about the exo-jcr-commits mailing list