[exo-jcr-commits] exo-jcr SVN: r3031 - 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
Tue Aug 31 10:58:31 EDT 2010
Author: areshetnyak
Date: 2010-08-31 10:58:31 -0400 (Tue, 31 Aug 2010)
New Revision: 3031
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/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java
Log:
EXOJCR-933 : Determine property type from nodetype definition in DocumentViewImport for version history was implemented.
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-08-31 14:21:30 UTC (rev 3030)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/DocumentViewImporter.java 2010-08-31 14:58:31 UTC (rev 3031)
@@ -285,7 +285,36 @@
List<ValueData> values = new ArrayList<ValueData>();
int pType = pDef.getRequiredType() > 0 ? pDef.getRequiredType() : PropertyType.STRING;
+
+ if (defs.getAnyDefinition().isResidualSet())
+ {
+ if (nodeData.getQPath().isDescendantOf(Constants.JCR_VERSION_STORAGE_PATH))
+ {
+ if (nodeData.getPrimaryTypeName().equals(Constants.NT_FROZENNODE))
+ {
+ // get primaryType
+ InternalQName fptName = locationFactory.parseJCRName(atts.get("jcr:frozenPrimaryType")).getInternalName();
+ // get mixin types
+ List<JCRName> mtNames = getJCRNames(atts.get("jcr:frozenMixinTypes"));
+
+ InternalQName fmtName[] = new InternalQName[mtNames.size()];
+
+ for (int i = 0; i < mtNames.size(); i++)
+ {
+ fmtName[i] = new InternalQName(mtNames.get(i).getNamespace(), mtNames.get(i).getName());
+ }
+
+ PropertyDefinitionDatas ptVhdefs = nodeTypeDataManager.getPropertyDefinitions(propName, fptName, fmtName);
+
+ if (ptVhdefs != null)
+ {
+ pType = (ptVhdefs.getAnyDefinition().getRequiredType() > 0 ? ptVhdefs.getAnyDefinition().getRequiredType() : PropertyType.STRING);
+ }
+ }
+ }
+ }
+
if ("".equals(propertiesMap.get(propName)))
{
// Skip empty non string values
@@ -293,7 +322,7 @@
{
continue;
}
-
+
String denormalizeString = StringConverter.denormalizeString(propertiesMap.get(propName));
Value value = valueFactory.createValue(denormalizeString, pType);
values.add(((BaseValue)value).getInternalData());
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-08-31 14:21:30 UTC (rev 3030)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/importing/TestImport.java 2010-08-31 14:58:31 UTC (rev 3031)
@@ -48,6 +48,7 @@
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
+import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Value;
@@ -1990,4 +1991,100 @@
fileImport.checkout();
root.save();
}
+
+ /**
+ * https://jira.jboss.org/browse/EXOJCR-933
+ *
+ * @throws Exception
+ */
+ public void testEXOJCR933_Doc_exo_datetime() throws Exception
+ {
+
+ Node testRoot = root.addNode("testRoot");
+ Node fileNode = testRoot.addNode("TestEXOJCR933_exo_datetime");
+ fileNode.setProperty("exo:datetime", Calendar.getInstance());
+
+ if (fileNode.canAddMixin("mix:versionable"))
+ {
+ fileNode.addMixin("mix:versionable");
+ }
+
+ fileNode.addMixin("exo:datetime");
+
+ fileNode.setProperty("exo:dateCreated", Calendar.getInstance());
+ fileNode.setProperty("exo:dateModified", Calendar.getInstance());
+
+ root.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("TestEXOJCR933_exo_datetime"));
+
+ Node fileImport = restoreRoot.getNode("TestEXOJCR933_exo_datetime");
+ 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("exo:dateCreated");
+ assertNotNull(property);
+ assertNotNull(property.getDefinition());
+ assertEquals(PropertyType.DATE, property.getType());
+
+ property = fileImport.getProperty("exo:dateModified");
+ assertNotNull(property);
+ assertNotNull(property.getDefinition());
+ assertEquals(PropertyType.DATE, property.getType());
+
+ fileImport.restore("2", true);
+ root.save();
+
+ property = fileImport.getProperty("exo:dateCreated");
+ assertNotNull(property);
+ assertNotNull(property.getDefinition());
+ assertEquals(PropertyType.DATE, property.getType());
+
+ property = fileImport.getProperty("exo:dateModified");
+ assertNotNull(property);
+ assertNotNull(property.getDefinition());
+ assertEquals(PropertyType.DATE, property.getType());
+
+ fileImport.checkin();
+ fileImport.checkout();
+ root.save();
+ }
}
More information about the exo-jcr-commits
mailing list