[exo-jcr-commits] exo-jcr SVN: r2836 - in jcr/branches/1.12.x/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/api/importing and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Jul 29 04:04:47 EDT 2010


Author: areshetnyak
Date: 2010-07-29 04:04:46 -0400 (Thu, 29 Jul 2010)
New Revision: 2836

Modified:
   jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java
   jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java
   jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java
Log:
EXOJCR-865 : Problem with import of version history was fixed.

Modified: jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java	2010-07-29 08:03:37 UTC (rev 2835)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java	2010-07-29 08:04:46 UTC (rev 2836)
@@ -347,7 +347,16 @@
                   // there is single-value defeniton
                   if (defs.getDefinition(false) != null)
                   {
-                     isMultivalue = false;
+                     if (defs.getDefinition(false).isResidualSet() && nodeData.getPrimaryTypeName().equals(Constants.NT_FROZENNODE) 
+                              && propName.equals(Constants.JCR_PREDECESSORS))
+                     {
+                        /// TODO EXOJCR-865
+                        isMultivalue = true;
+                     }
+                     else
+                     {
+                        isMultivalue = false;
+                     }
                   }
                }
                else

Modified: jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java	2010-07-29 08:03:37 UTC (rev 2835)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java	2010-07-29 08:04:46 UTC (rev 2836)
@@ -414,7 +414,16 @@
             // there is single-value defeniton
             if (defs.getDefinition(false) != null)
             {
-               isMultivalue = false;
+               if (defs.getDefinition(false).isResidualSet() && currentNodeInfo.getPrimaryTypeName().equals(Constants.NT_FROZENNODE) 
+                        && propertyInfo.getName().equals(Constants.JCR_PREDECESSORS))
+               {
+                  /// TODO EXOJCR-865
+                  isMultivalue = true;
+               }
+               else
+               {
+                  isMultivalue = false;
+               }
             }
          }
          else

Modified: jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java	2010-07-29 08:03:37 UTC (rev 2835)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java	2010-07-29 08:04:46 UTC (rev 2836)
@@ -1000,4 +1000,172 @@
       {
       }
    }
+   
+   /**
+    * https://jira.jboss.org/browse/EXOJCR-865
+    * 
+    * @throws Exception
+    */
+   public void testEXOJCR865_Doc() throws Exception
+   {
+
+      Node testRoot = root.addNode("testRoot");
+      Node fileNode = testRoot.addNode("TestEXOJCR865", "nt:file");
+      Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
+      contentNode.setProperty("jcr:data", new ByteArrayInputStream("".getBytes()));
+      contentNode.setProperty("jcr:mimeType", "image/jpg");
+      contentNode.setProperty("jcr:lastModified", Calendar.getInstance());
+      root.save();
+      Node contentNodeBeforeAddVersion = fileNode.getNode("jcr:content");
+      assertNotNull(contentNodeBeforeAddVersion.getProperty("jcr:lastModified"));
+      if (fileNode.canAddMixin("mix:versionable"))
+      {
+         fileNode.addMixin("mix:versionable");
+      }
+      fileNode.save();
+      fileNode.checkin();
+      fileNode.checkout();
+      root.save();
+      
+      fileNode.checkin();
+      fileNode.checkout();
+      root.save();
+      
+      fileNode.checkin();
+      fileNode.checkout();
+      root.save();
+
+      String nodeDump = dumpVersionable(fileNode);
+      // Export VersionHistory
+
+      assertTrue(fileNode.isNodeType("mix:versionable"));
+
+      VersionableNodeInfo nodeInfo = new VersionableNodeInfo(fileNode);
+
+      // node content
+      byte[] versionableNode = serialize(fileNode, false, true);
+      // version history
+      byte[] versionHistory = serialize(fileNode.getVersionHistory(), false, true);
+      System.out.println(new String(versionHistory));
+
+      
+      
+      // restore node content
+      Node restoreRoot = testRoot.addNode("restRoot");
+      testRoot.save();
+      
+      deserialize(restoreRoot, XmlSaveType.SESSION, true, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING,
+         new ByteArrayInputStream(versionableNode));
+      root.save();
+
+      assertTrue(restoreRoot.hasNode("TestEXOJCR865"));
+
+      Node fileImport = restoreRoot.getNode("TestEXOJCR865");
+      assertTrue(fileImport.isNodeType("mix:versionable"));
+
+      VersionHistoryImporter versionHistoryImporter =
+         new VersionHistoryImporter((NodeImpl)fileImport, new ByteArrayInputStream(versionHistory), nodeInfo
+            .getBaseVersion(), nodeInfo.getPredecessorsHistory(), nodeInfo.getVersionHistory());
+      versionHistoryImporter.doImport();
+      root.save();
+      
+      Property property = fileImport.getProperty("jcr:predecessors");
+      assertNotNull(property);
+      assertNotNull(property.getDefinition());
+      
+      fileImport.restore("3", true);
+      root.save();
+      
+      property = fileImport.getProperty("jcr:predecessors");
+      assertNotNull(property);
+      assertNotNull(property.getDefinition());
+      
+      fileImport.checkin();
+      fileImport.checkout();
+      root.save();
+   }
+   
+   /**
+    * https://jira.jboss.org/browse/EXOJCR-865
+    * 
+    * @throws Exception
+    */
+   public void testEXOJCR865_Sys() throws Exception
+   {
+
+      Node testRoot = root.addNode("testRoot");
+      Node fileNode = testRoot.addNode("TestEXOJCR865", "nt:file");
+      Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
+      contentNode.setProperty("jcr:data", new ByteArrayInputStream("".getBytes()));
+      contentNode.setProperty("jcr:mimeType", "image/jpg");
+      contentNode.setProperty("jcr:lastModified", Calendar.getInstance());
+      root.save();
+      Node contentNodeBeforeAddVersion = fileNode.getNode("jcr:content");
+      assertNotNull(contentNodeBeforeAddVersion.getProperty("jcr:lastModified"));
+      if (fileNode.canAddMixin("mix:versionable"))
+      {
+         fileNode.addMixin("mix:versionable");
+      }
+      fileNode.save();
+      fileNode.checkin();
+      fileNode.checkout();
+      root.save();
+      
+      fileNode.checkin();
+      fileNode.checkout();
+      root.save();
+      
+      fileNode.checkin();
+      fileNode.checkout();
+      root.save();
+
+      String nodeDump = dumpVersionable(fileNode);
+      // Export VersionHistory
+
+      assertTrue(fileNode.isNodeType("mix:versionable"));
+
+      VersionableNodeInfo nodeInfo = new VersionableNodeInfo(fileNode);
+
+      // node content
+      byte[] versionableNode = serialize(fileNode, true, true);
+      // version history
+      byte[] versionHistory = serialize(fileNode.getVersionHistory(), false, true);
+      System.out.println(new String(versionHistory));
+
+      
+      
+      // restore node content
+      Node restoreRoot = testRoot.addNode("restRoot");
+      testRoot.save();
+      
+      deserialize(restoreRoot, XmlSaveType.SESSION, true, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING,
+         new ByteArrayInputStream(versionableNode));
+      root.save();
+
+      assertTrue(restoreRoot.hasNode("TestEXOJCR865"));
+
+      Node fileImport = restoreRoot.getNode("TestEXOJCR865");
+      assertTrue(fileImport.isNodeType("mix:versionable"));
+
+      VersionHistoryImporter versionHistoryImporter =
+         new VersionHistoryImporter((NodeImpl)fileImport, new ByteArrayInputStream(versionHistory), nodeInfo
+            .getBaseVersion(), nodeInfo.getPredecessorsHistory(), nodeInfo.getVersionHistory());
+      versionHistoryImporter.doImport();
+      root.save();
+      
+      Property property = fileImport.getProperty("jcr:predecessors");
+      assertNotNull(property);
+      assertNotNull(property.getDefinition());
+      
+      fileImport.restore("3", true);
+      root.save();
+      
+      property = fileImport.getProperty("jcr:predecessors");
+      assertNotNull(property);
+      assertNotNull(property.getDefinition());
+      
+      fileImport.checkin();
+      fileImport.checkout();
+      root.save();
+   }
 }



More information about the exo-jcr-commits mailing list