[ 
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)

Reply via email to