Index: oak-core/src/main/java/org/apache/jackrabbit/oak/spi/xml/PropInfo.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/spi/xml/PropInfo.java (revision 1618536) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/xml/PropInfo.java (working copy) @@ -115,7 +115,7 @@ public int getTargetType(PropertyDefinition def) { int target = def.getRequiredType(); if (target != PropertyType.UNDEFINED) { - return type; + return target; } else if (type != PropertyType.UNDEFINED) { return type; } else { Index: oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java =================================================================== --- oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (revision 1618536) +++ oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (working copy) @@ -54,6 +54,7 @@ import javax.jcr.nodetype.NodeType; import javax.jcr.nodetype.NodeTypeManager; import javax.jcr.nodetype.NodeTypeTemplate; +import javax.jcr.nodetype.PropertyDefinitionTemplate; import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.api.JackrabbitNode; @@ -2059,6 +2060,35 @@ session.logout(); } + @Test // OAK- + public void importWithRegisteredType() throws Exception { + Session session = getAdminSession(); + NodeTypeManager ntMgr = getAdminSession().getWorkspace().getNodeTypeManager(); + NodeTypeTemplate ntd = ntMgr.createNodeTypeTemplate(); + ntd.setName("foo"); + PropertyDefinitionTemplate propDefTemplate = + ntMgr.createPropertyDefinitionTemplate(); + propDefTemplate.setName("fooProp"); + propDefTemplate.setRequiredType(PropertyType.STRING); + ntd.getPropertyDefinitionTemplates().add(propDefTemplate); + ntMgr.registerNodeType(ntd, false); + + Node node = session.getRootNode().addNode("node", "foo"); + node.setProperty("fooProp", "1"); + session.save(); + + String uuid = node.getIdentifier(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + session.exportDocumentView("/node", out, true, false); + node.remove(); + session.save(); + session.getWorkspace().importXML("/", new ByteArrayInputStream(out.toByteArray()), + ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW); + session.save(); + node = session.getNode("/node"); + assertTrue(uuid.equals(node.getIdentifier())); + } + //------------------------------------------------------------< private >--- private Node getNode(String path) throws RepositoryException {