hi jervis, as thomas pointed out, shareable nodes are a jcr 2.0 feature. there was some preliminary jcr 2.0 support in jackrabbit 1.6 but it's not officially supported.
your problem is caused by missing sharable nodes support in the importXML method. for more information see 14.7 and 14.8 in the JCR 2.0 spec: http://www.day.com/specs/jcr/2.0/14_Shareable_Nodes.html jcr 2.0 (and shareable nodes) will be fully supported in the upcoming jackrabbit 2.0 release. there's a beta that you can use until the final 2.0 release becomes available. cheers stefan On Thu, Nov 19, 2009 at 7:12 AM, Jervis Liu <[email protected]> wrote: > Hi, > > I am using the sharable node feature in JackRabbit 1.6. I did an > export using Session.exportSystemView() then I import back using > Session.getWorkspace().importXML(). Everything work fine until I > created some sharable nodes. I got exception from importXML() like > below: > > Caused by: javax.jcr.nodetype.NoSuchNodeTypeException: > {http://www.jcp.org/jcr/nt/1.0}share > at > org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getEffectiveNodeType(NodeTypeRegistry.java:1024) > at > org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getEffectiveNodeType(NodeTypeRegistry.java:471) > at > org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:682) > at > org.apache.jackrabbit.core.nodetype.EffectiveNodeType.checkAddNodeConstraints(EffectiveNodeType.java:655) > at > org.apache.jackrabbit.core.BatchedItemOperations.checkAddNode(BatchedItemOperations.java:732) > at > org.apache.jackrabbit.core.xml.WorkspaceImporter.resolveUUIDConflict(WorkspaceImporter.java:150) > at > org.apache.jackrabbit.core.xml.WorkspaceImporter.startNode(WorkspaceImporter.java:487) > at > org.apache.jackrabbit.core.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:86) > at > org.apache.jackrabbit.core.xml.SysViewImportHandler.endElement(SysViewImportHandler.java:231) > at > org.apache.jackrabbit.core.xml.ImportHandler.endElement(ImportHandler.java:183) > at > org.apache.jackrabbit.commons.xml.DefaultContentHandler.endElement(DefaultContentHandler.java:83) > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) > at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) > at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source) > at > org.apache.jackrabbit.commons.xml.ParsingContentHandler.parse(ParsingContentHandler.java:62) > at > org.apache.jackrabbit.commons.AbstractWorkspace.importXML(AbstractWorkspace.java:54) > at > org.drools.repository.RulesRepository.importRulesRepositoryFromStream(RulesRepository.java:979) > ... 20 more > > The code snippet I used to create sharable nodes looks like below roughly: > > sharableNodeA().addMixin("mix:shareable"); > ..... > > Session session = repo.getSession(); > Workspace workspace = session.getWorkspace(); > String path = "/pathA/pathB/sharableNodeB"; > workspace.clone(workspace.getName(), sharableNodeA.getPath(), > path, false); > .............. > > I wonder where the schema mix:shareable is defined? Obviously it is > not defined by http://www.jcp.org/jcr/nt/1.0. Did I do anything wrong > or it is a bug in JackRabbit 1.6? > > Thanks, > Jervis Liu >
