Index: /home/ntoper/workspace/jackrabbit current/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporterTest.java =================================================================== --- /home/ntoper/workspace/jackrabbit current/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporterTest.java (revision 0) +++ /home/ntoper/workspace/jackrabbit current/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporterTest.java (revision 0) @@ -0,0 +1,123 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.jackrabbit.core.xml; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +import javax.jcr.ImportUUIDBehavior; +import javax.jcr.LoginException; +import javax.jcr.Node; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.SimpleCredentials; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.TransformerException; +import javax.xml.transform.sax.SAXTransformerFactory; +import javax.xml.transform.sax.TransformerHandler; +import javax.xml.transform.stream.StreamResult; + +import org.apache.jackrabbit.core.TransientRepository; +import org.apache.jackrabbit.core.WorkspaceImpl; +import org.apache.jackrabbit.test.JUnitTest; +import org.xml.sax.SAXException; + +/** + * @author ntoper + * + */ +public class WorkspaceImporterTest extends JUnitTest{ + + Session session; + File temp; + + /** + * Test case for JCR 535: check the root node + * is correctly imported. + */ + public WorkspaceImporterTest() { + } + + public void setUp() throws IOException, LoginException, RepositoryException { + Repository repository = new TransientRepository(); + + // Login to the default workspace as a dummy user + session = repository.login( + new SimpleCredentials("username", "password".toCharArray())); + + // Use the root node as a starting point + Node root = session.getRootNode(); + + //Versionning + //create versionable node + Node n = root.addNode("childNode", "nt:unstructured"); + n.addMixin("mix:versionable"); + n.setProperty("anyProperty", "Blah"); + session.save(); + n.checkin(); + + //add new version + Node child = root.getNode("childNode"); + child.checkout(); + child.setProperty("anyProperty", "Blah2"); + session.save(); + child.checkin(); + + //export + SAXTransformerFactory stf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); + temp = File.createTempFile("rootNode", ".xml"); + + try { + TransformerHandler th = stf.newTransformerHandler(); + th.setResult(new StreamResult(new FileOutputStream(temp))); + th.getTransformer().setParameter(OutputKeys.METHOD, "xml"); + th.getTransformer().setParameter(OutputKeys.ENCODING, "UTF-8"); + th.getTransformer().setParameter(OutputKeys.INDENT, "no"); + + new SysViewSAXEventGenerator( + session.getRootNode(), false, false, th) { + protected void process(Node node, int level) + throws RepositoryException, SAXException { + if (!"/jcr:system".equals(node.getPath())) { + super.process(node, level); + } + } + } .serialize(); + } catch (TransformerException te) { + throw new RepositoryException(te); + } catch (SAXException se) { + throw new RepositoryException(se); + } + } + + public void testImportRootNode() throws RepositoryException, IOException { + FileInputStream in = new FileInputStream(temp); + WorkspaceImpl wsp = (WorkspaceImpl) session.getWorkspace(); + wsp.sanityCheck(); + wsp.importXML("/", in, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING); + wsp.sanityCheck(); + } + + public void tearDown() { + temp.delete(); + } + +}