Author: areshetnyak
Date: 2010-07-29 04:03:37 -0400 (Thu, 29 Jul 2010)
New Revision: 2835
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java
jcr/trunk/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/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java 2010-07-27
14:39:46 UTC (rev 2834)
+++
jcr/trunk/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)
@@ -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/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/SystemViewImporter.java 2010-07-27
14:39:46 UTC (rev 2834)
+++
jcr/trunk/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)
@@ -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/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java 2010-07-27
14:39:46 UTC (rev 2834)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java 2010-07-29
08:03:37 UTC (rev 2835)
@@ -1008,7 +1008,7 @@
*
* @throws Exception
*/
- public void testEXOJCR865() throws Exception
+ public void testEXOJCR865_Doc() throws Exception
{
Node testRoot = root.addNode("testRoot");
@@ -1050,14 +1050,19 @@
byte[] versionHistory = serialize(fileNode.getVersionHistory(), false, true);
System.out.println(new String(versionHistory));
+
+
// restore node content
- deserialize(testRoot, XmlSaveType.SESSION, true,
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING,
+ Node restoreRoot = testRoot.addNode("restRoot");
+ testRoot.save();
+
+ deserialize(restoreRoot, XmlSaveType.SESSION, true,
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING,
new ByteArrayInputStream(versionableNode));
root.save();
- assertTrue(testRoot.hasNode("TestEXOJCR865"));
+ assertTrue(restoreRoot.hasNode("TestEXOJCR865"));
- Node fileImport = testRoot.getNode("TestEXOJCR865");
+ Node fileImport = restoreRoot.getNode("TestEXOJCR865");
assertTrue(fileImport.isNodeType("mix:versionable"));
VersionHistoryImporter versionHistoryImporter =
@@ -1066,10 +1071,90 @@
versionHistoryImporter.doImport();
root.save();
+ Property property = fileImport.getProperty("jcr:predecessors");
+ assertNotNull(property);
+ assertNotNull(property.getDefinition());
- VersionIterator vIterator = fileImport.getVersionHistory().getAllVersions();
- System.out.println("\n\n" + vIterator.getSize() + "\n\n");
+ 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());
@@ -1081,5 +1166,8 @@
assertNotNull(property);
assertNotNull(property.getDefinition());
+ fileImport.checkin();
+ fileImport.checkout();
+ root.save();
}
}