[
https://issues.apache.org/jira/browse/JCR-3890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wessel Nieboer updated JCR-3890:
--------------------------------
Description:
When exporting a node that has mixins, it does not export these to XML. This
leads to exceptions when trying to import the XML.
{code}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.jcr.ImportUUIDBehavior;
import javax.jcr.Node;
import javax.jcr.PropertyType;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import org.apache.jackrabbit.core.TransientRepository;
import org.junit.Test;
public class JackrabbitTestXML {
@Test
public void testExportImportXML() throws Exception {
Repository repository = new TransientRepository();
SimpleCredentials creds = new SimpleCredentials("user",
"pass".toCharArray());
Session session = repository.login(creds);
NodeTypeManager mgr = session.getWorkspace().getNodeTypeManager();
NodeTypeTemplate mixA = mgr.createNodeTypeTemplate();
NodeTypeTemplate mixB = mgr.createNodeTypeTemplate();
mixA.setName("mix:a");
mixA.setMixin(true);
mixB.setName("mix:b");
mixB.setMixin(true);
PropertyDefinitionTemplate jcrA = mgr.createPropertyDefinitionTemplate();
jcrA.setName("jcr:a");
jcrA.setRequiredType(PropertyType.STRING);
PropertyDefinitionTemplate jcrB = mgr.createPropertyDefinitionTemplate();
jcrB.setName("jcr:b");
jcrB.setRequiredType(PropertyType.STRING);
mixA.getPropertyDefinitionTemplates().add(jcrA);
mixB.getPropertyDefinitionTemplates().add(jcrB);
mgr.registerNodeType(mixA, true);
mgr.registerNodeType(mixB, true);
Node test = session.getRootNode().addNode("a", "nt:folder");
test.addMixin("mix:a");
test.addMixin("mix:b");
test.setProperty("jcr:a", "a");
test.setProperty("jcr:b", "b");
session.save();
FileOutputStream fos = new FileOutputStream(new File("target/wessel"));
session.exportDocumentView("/a", fos, false, false);
fos.close();
FileInputStream fis = new FileInputStream(new File("target/wessel"));
session.getRootNode().addNode("b", "nt:folder");
session.save();
session.getWorkspace().importXML("/b", fis,
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
// session.importXML("/fotosets2", fis,
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
}
}
{code}
was:
When exporting a node that has mixins, it does not export these to XML.
{code}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.jcr.ImportUUIDBehavior;
import javax.jcr.Node;
import javax.jcr.PropertyType;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import org.apache.jackrabbit.core.TransientRepository;
import org.junit.Test;
public class JackrabbitTestXML {
@Test
public void testExportImportXML() throws Exception {
Repository repository = new TransientRepository();
SimpleCredentials creds = new SimpleCredentials("user",
"pass".toCharArray());
Session session = repository.login(creds);
NodeTypeManager mgr = session.getWorkspace().getNodeTypeManager();
NodeTypeTemplate mixA = mgr.createNodeTypeTemplate();
NodeTypeTemplate mixB = mgr.createNodeTypeTemplate();
mixA.setName("mix:a");
mixA.setMixin(true);
mixB.setName("mix:b");
mixB.setMixin(true);
PropertyDefinitionTemplate jcrA = mgr.createPropertyDefinitionTemplate();
jcrA.setName("jcr:a");
jcrA.setRequiredType(PropertyType.STRING);
PropertyDefinitionTemplate jcrB = mgr.createPropertyDefinitionTemplate();
jcrB.setName("jcr:b");
jcrB.setRequiredType(PropertyType.STRING);
mixA.getPropertyDefinitionTemplates().add(jcrA);
mixB.getPropertyDefinitionTemplates().add(jcrB);
mgr.registerNodeType(mixA, true);
mgr.registerNodeType(mixB, true);
Node test = session.getRootNode().addNode("a", "nt:folder");
test.addMixin("mix:a");
test.addMixin("mix:b");
test.setProperty("jcr:a", "a");
test.setProperty("jcr:b", "b");
session.save();
FileOutputStream fos = new FileOutputStream(new File("target/wessel"));
session.exportDocumentView("/a", fos, false, false);
fos.close();
FileInputStream fis = new FileInputStream(new File("target/wessel"));
session.getRootNode().addNode("b", "nt:folder");
session.save();
session.getWorkspace().importXML("/b", fis,
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
// session.importXML("/fotosets2", fis,
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
}
}
{code}
> Session.exportDocumentView() does not export mixin types, causing exceptions
> on importing
> -----------------------------------------------------------------------------------------
>
> Key: JCR-3890
> URL: https://issues.apache.org/jira/browse/JCR-3890
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Affects Versions: 2.10.1
> Reporter: Wessel Nieboer
>
> When exporting a node that has mixins, it does not export these to XML. This
> leads to exceptions when trying to import the XML.
> {code}
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.FileOutputStream;
> import javax.jcr.ImportUUIDBehavior;
> import javax.jcr.Node;
> import javax.jcr.PropertyType;
> import javax.jcr.Repository;
> import javax.jcr.Session;
> import javax.jcr.SimpleCredentials;
> import javax.jcr.nodetype.NodeTypeManager;
> import javax.jcr.nodetype.NodeTypeTemplate;
> import javax.jcr.nodetype.PropertyDefinitionTemplate;
> import org.apache.jackrabbit.core.TransientRepository;
> import org.junit.Test;
> public class JackrabbitTestXML {
> @Test
> public void testExportImportXML() throws Exception {
> Repository repository = new TransientRepository();
> SimpleCredentials creds = new SimpleCredentials("user",
> "pass".toCharArray());
> Session session = repository.login(creds);
> NodeTypeManager mgr = session.getWorkspace().getNodeTypeManager();
> NodeTypeTemplate mixA = mgr.createNodeTypeTemplate();
> NodeTypeTemplate mixB = mgr.createNodeTypeTemplate();
> mixA.setName("mix:a");
> mixA.setMixin(true);
> mixB.setName("mix:b");
> mixB.setMixin(true);
> PropertyDefinitionTemplate jcrA = mgr.createPropertyDefinitionTemplate();
> jcrA.setName("jcr:a");
> jcrA.setRequiredType(PropertyType.STRING);
> PropertyDefinitionTemplate jcrB = mgr.createPropertyDefinitionTemplate();
> jcrB.setName("jcr:b");
> jcrB.setRequiredType(PropertyType.STRING);
> mixA.getPropertyDefinitionTemplates().add(jcrA);
> mixB.getPropertyDefinitionTemplates().add(jcrB);
> mgr.registerNodeType(mixA, true);
> mgr.registerNodeType(mixB, true);
> Node test = session.getRootNode().addNode("a", "nt:folder");
> test.addMixin("mix:a");
> test.addMixin("mix:b");
> test.setProperty("jcr:a", "a");
> test.setProperty("jcr:b", "b");
> session.save();
> FileOutputStream fos = new FileOutputStream(new File("target/wessel"));
> session.exportDocumentView("/a", fos, false, false);
> fos.close();
> FileInputStream fis = new FileInputStream(new File("target/wessel"));
> session.getRootNode().addNode("b", "nt:folder");
> session.save();
> session.getWorkspace().importXML("/b", fis,
> ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
> // session.importXML("/fotosets2", fis,
> ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)