You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by tingup <ti...@gmail.com> on 2010/07/12 17:30:53 UTC

jackrabbit 1.6.2 import/export

Hi everyone,

my export/import method as follow:

    /**
     * 
     * @param path node path
     * @param xmlfileName xml file name eg:"systemview.xml"
     */
    public void exportData(final String path, final String xmlfileName){
        jcrTemplate.execute(new JcrCallback(){
            public Object doInJcr(Session session) throws IOException,
                    RepositoryException {
                File outputFile = new File(xmlfileName);
                FileOutputStream out = new FileOutputStream(outputFile);
                session.exportSystemView(CMSUtil.normalizedPath(path), out, false, false);
                return null;
            }
        });
    }

    /**
     * 
     * @param path node path
     * @param xmlfileName xml file name eg:"systemview.xml"
     */
    public void importData(final String path, final String xmlfileName){
        jcrTemplate.execute(new JcrCallback(){
            public Object doInJcr(Session session) throws IOException,
                    RepositoryException {
                File inputFile = new File(xmlfileName);
                FileInputStream in = new FileInputStream(inputFile);
                session.importXML
                         (CMSUtil.normalizedPath(path), in, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
                return null;
            }
        });
        jcrTemplate.save();
    }

I do exportData("/","file.xml"), then changed the repository.xml of jackrabbit 1.6.2, (add datastore, change org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager to org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager ) and drop the db tables jackrabbit use,( also the workspace.xml in repo home directory). and I got follow error info when i importData("/", "file.xml").

org.springframework.dao.DataIntegrityViolationException: Constraint has been violated; nested exception is javax.jcr.nodetype.ConstraintViolationException: Unable to perform operation. Node is protected.
at org.springmodules.jcr.SessionFactoryUtils.translateException(SessionFactoryUtils.java:182)
at org.springmodules.jcr.JcrAccessor.convertJcrAccessException(JcrAccessor.java:58)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:82)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at com.tingup.cms.service.impl.JcrNodeServiceOcmImpl.importData(JcrNodeServiceOcmImpl.java:101)
[..............................]
Caused by: javax.jcr.nodetype.ConstraintViolationException: Unable to perform operation. Node is protected.
at org.apache.jackrabbit.core.ItemValidator.checkCondition(ItemValidator.java:300)
at org.apache.jackrabbit.core.ItemValidator.checkModify(ItemValidator.java:274)
at org.apache.jackrabbit.core.NodeImpl.internalAddChildNode(NodeImpl.java:805)
at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1646)
at org.apache.jackrabbit.core.xml.SessionImporter.createNode(SessionImporter.java:95)
at org.apache.jackrabbit.core.xml.SessionImporter.startNode(SessionImporter.java:230)
at org.apache.jackrabbit.core.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:86)
at org.apache.jackrabbit.core.xml.SysViewImportHandler.startElement(SysViewImportHandler.java:127)
at org.apache.jackrabbit.core.xml.ImportHandler.startElement(ImportHandler.java:166)
at org.apache.jackrabbit.commons.xml.DefaultContentHandler.startElement(DefaultContentHandler.java:162)
[..............................]


I also tried create a new node "/test" in the jackrabbit root node, and importData("/test", "file.xml"). get the follow error:
2010-07-12 23:27:06,019 [http-8080-1] ERROR com.tingup.cms.portlet.CmsImportExportPortlet - Constraint has been violated; nested exception is javax.jcr.nodetype.ConstraintViolationException: no definition found in parent node's node type for new node: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root
org.springframework.dao.DataIntegrityViolationException: Constraint has been violated; nested exception is javax.jcr.nodetype.ConstraintViolationException: no definition found in parent node's node type for new node: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root
at org.springmodules.jcr.SessionFactoryUtils.translateException(SessionFactoryUtils.java:182)
at org.springmodules.jcr.JcrAccessor.convertJcrAccessException(JcrAccessor.java:58)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:82)
at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:108)
at com.tingup.cms.service.impl.JcrNodeServiceOcmImpl.importData(JcrNodeServiceOcmImpl.java:101)
[..................................]
Caused by: javax.jcr.nodetype.ConstraintViolationException: no definition found in parent node's node type for new node: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root
at org.apache.jackrabbit.core.NodeImpl.internalAddChildNode(NodeImpl.java:775)
at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1646)
at org.apache.jackrabbit.core.xml.SessionImporter.createNode(SessionImporter.java:95)
at org.apache.jackrabbit.core.xml.SessionImporter.startNode(SessionImporter.java:230)
at org.apache.jackrabbit.core.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:86)
at org.apache.jackrabbit.core.xml.SysViewImportHandler.startElement(SysViewImportHandler.java:127)
at org.apache.jackrabbit.core.xml.ImportHandler.startElement(ImportHandler.java:166)
at org.apache.jackrabbit.commons.xml.DefaultContentHandler.startElement(DefaultContentHandler.java:162)
[..................................]
Caused by: javax.jcr.nodetype.ConstraintViolationException: no matching child node definition found for {http://www.jcp.org/jcr/1.0}root
at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:732)
at org.apache.jackrabbit.core.NodeImpl.getApplicableChildNodeDefinition(NodeImpl.java:886)
at org.apache.jackrabbit.core.NodeImpl.internalAddChildNode(NodeImpl.java:771)
... 117 more


Help me! thanks very much.

Regards, 
tingup 

Re: jackrabbit 1.6.2 import/export

Posted by Guo Du <mr...@duguo.org>.
On Mon, Jul 12, 2010 at 4:30 PM, tingup <ti...@gmail.com> wrote:
> I got follow error info when i importData("/", "file.xml").
root node is protected and you cannot import.

You may export/import nodes under root one by one.

-Guo