Index: /home/ntoper/workspace/backup/src/main/java/org/apache/jackrabbit/backup/NodeVersionHistoriesBackup.java =================================================================== --- /home/ntoper/workspace/backup/src/main/java/org/apache/jackrabbit/backup/NodeVersionHistoriesBackup.java (revision 429857) +++ /home/ntoper/workspace/backup/src/main/java/org/apache/jackrabbit/backup/NodeVersionHistoriesBackup.java (working copy) @@ -20,42 +20,17 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.util.zip.ZipException; -import javax.jcr.AccessDeniedException; -import javax.jcr.InvalidSerializedDataException; -import javax.jcr.ItemExistsException; +import javax.jcr.ImportUUIDBehavior; import javax.jcr.LoginException; -import javax.jcr.NodeIterator; -import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.jcr.lock.LockException; -import javax.jcr.nodetype.ConstraintViolationException; -import javax.jcr.nodetype.NodeDefinition; -import javax.jcr.version.VersionException; -import org.apache.jackrabbit.core.ItemImpl; -import org.apache.jackrabbit.core.ItemManager; -import org.apache.jackrabbit.core.NodeImpl; import org.apache.jackrabbit.core.RepositoryImpl; import org.apache.jackrabbit.core.SessionImpl; -import org.apache.jackrabbit.core.nodetype.NodeDef; -import org.apache.jackrabbit.core.nodetype.NodeDefImpl; -import org.apache.jackrabbit.core.nodetype.NodeDefinitionImpl; -import org.apache.jackrabbit.core.nodetype.NodeTypeDef; -import org.apache.jackrabbit.core.version.VersionManager; +import org.apache.jackrabbit.core.WorkspaceImpl; import org.apache.jackrabbit.core.version.VersionManagerImpl; -import org.apache.jackrabbit.core.xml.ImportHandler; -import org.apache.jackrabbit.core.xml.SessionImporter; -import org.apache.jackrabbit.name.MalformedPathException; -import org.apache.jackrabbit.name.Path; -import org.apache.jackrabbit.name.PathFormat; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.XMLReaderFactory; + /** * @author ntoper @@ -62,18 +37,19 @@ * */ public class NodeVersionHistoriesBackup extends Backup { - + /** * @param repo * @param conf - * @throws RepositoryException - * @throws LoginException + * @throws RepositoryException + * @throws LoginException */ - public NodeVersionHistoriesBackup(RepositoryImpl repo, BackupConfig conf, String login, String password) throws LoginException, RepositoryException { + public NodeVersionHistoriesBackup(RepositoryImpl repo, BackupConfig conf, String login, String password) + throws LoginException, RepositoryException { super(repo, conf, login, password); // TODO Auto-generated constructor stub } - + public NodeVersionHistoriesBackup() { super(); // TODO Auto-generated constructor stub @@ -78,7 +54,7 @@ super(); // TODO Auto-generated constructor stub } - + /* (non-Javadoc) * @see org.apache.jackrabbit.backup.Backup#backup(org.apache.jackrabbit.backup.BackupIOHandler) */ @@ -85,9 +61,9 @@ public void backup(BackupIOHandler h) throws RepositoryException, IOException { Session s = this.getSession(); - + File temp = new File(this.getConf().getWorkFolder() + "history.xml"); - + try { FileOutputStream out = new FileOutputStream(temp); s.exportSystemView("/jcr:system/jcr:versionStorage", out, false, false); @@ -97,159 +73,10 @@ temp.delete(); } } - + /* (non-Javadoc) * @see org.apache.jackrabbit.backup.Backup#restore(org.apache.jackrabbit.backup.BackupIOHandler) */ - /* public void restore(BackupIOHandler h) throws ZipException, IOException, RepositoryException { - SessionImpl s = (SessionImpl) this.getSession(); - VersionManagerImpl versionMgr = (VersionManager) s.getVersionManager(); - File temp = new File(this.getConf().getWorkFolder() + "history.xml"); - try { - h.read("history.xml", temp); - FileInputStream in = new FileInputStream(temp); - - // this.getRepo().importXML("/jcr:system/jcr:versionStorage", in, 0 ); - } - finally { - temp.delete(); - } - - - - public void importXML(String parentAbsPath, InputStream in, int uuidBehavior) throws RepositoryException, IOException { - - Path p = VersionManagerImpl.getVersionStoragePath(); - SessionImpl s = (SessionImpl) this.getSystemSession("default"); - - //this.getItem() - ItemImpl item = s.getItemManager().getItem(p); - NodeImpl parent = (NodeImpl) item; - SessionImporter importer = new SessionImporter(parent, s, 3); - ImportHandler handler = new ImportHandler(importer, s.getNamespaceResolver(), this.getNamespaceRegistry()); - - try { - XMLReader parser = - XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); - parser.setContentHandler(handler); - parser.setErrorHandler(handler); - // being paranoid... - parser.setFeature("http://xml.org/sax/features/namespaces", true); - parser.setFeature("http://xml.org/sax/features/namespace-prefixes", - false); - - parser.parse(new InputSource(in)); - } catch (SAXException se) { - // check for wrapped repository exception - Exception e = se.getException(); - if (e != null && e instanceof RepositoryException) { - throw (RepositoryException) e; - } else { - String msg = "failed to parse XML stream"; - throw new InvalidSerializedDataException(msg, se); - } - } - - } - } - - SessionImpl s = (SessionImpl) this.getSession(); - Path p; - try { - p = PathFormat.parse("/jcr:system/jcr:versionStorage", s.getNamespaceResolver()).getNormalizedPath(); - } catch (MalformedPathException e) { - //Shouldn't happen or bug in the source code - throw new RepositoryException(); - } - ItemImpl item = s.getItemManager().getItem(p); - NodeImpl parent = (NodeImpl) item; - - //TODO Add a parameter to specify the UUIDBehavior? - SessionImporter importer = new SessionImporter(parent, s, 3); - ImportHandler handler = new ImportHandler(importer, s.getNamespaceResolver(), this.getRepo().getNamespaceRegistry()); - File temp = new File(this.getConf().getWorkFolder() + "history.xml"); - h.read("history.xml", temp); - FileInputStream in = new FileInputStream(temp); - - try { - XMLReader parser = - XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); - parser.setContentHandler(handler); - parser.setErrorHandler(handler); - // being paranoid... - parser.setFeature("http://xml.org/sax/features/namespaces", true); - parser.setFeature("http://xml.org/sax/features/namespace-prefixes", - false); - - parser.parse(new InputSource(in)); - } catch (SAXException se) { - // check for wrapped repository exception - Exception e = se.getException(); - if (e != null && e instanceof RepositoryException) { - throw (RepositoryException) e; - } else { - String msg = "failed to parse XML stream"; - throw new InvalidSerializedDataException(msg, se); - } - } finally { - temp.delete(); - } - - //TODO find a way to put /jcr:system/jcr:versionStorage probably by instanciating as a repo/wsp the versioning pm - File temp = new File(this.getConf().getWorkFolder() + "history.xml"); - SessionImpl s = (SessionImpl) this.getSession(); - - - Path p = null; - try { - p = PathFormat.parse("/jcr:system/jcr:versionStorage", s.getNamespaceResolver()).getNormalizedPath(); - } catch (MalformedPathException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - //Unprotect the tree... - - ItemImpl item = s.getItemManager().getItem(p); - - NodeImpl parent = (NodeImpl) item; - unprotect(parent); - - - - - try { - - h.read("history.xml", temp); - FileInputStream iTemp = new FileInputStream(temp); - s.importXML("/", iTemp, 0); - } catch (PathNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ItemExistsException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ConstraintViolationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (VersionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InvalidSerializedDataException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (LockException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - - } - finally { - temp.delete(); - } - - - - - }*/ public void restore(BackupIOHandler h) throws RepositoryException, IOException { File temp = new File(this.getConf().getWorkFolder() + "history.xml"); SessionImpl s = (SessionImpl) this.getSession(); @@ -254,29 +81,11 @@ File temp = new File(this.getConf().getWorkFolder() + "history.xml"); SessionImpl s = (SessionImpl) this.getSession(); - Path p = null; try { - p = PathFormat.parse("/jcr:system/jcr:versionStorage", s.getNamespaceResolver()).getNormalizedPath(); - } catch (MalformedPathException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - //Unprotect the tree... - - ItemImpl item = s.getItemManager().getItem(p); - - NodeImpl parent = (NodeImpl) item; - unprotect(parent); - - try { h.read("history.xml", temp); FileInputStream iTemp = new FileInputStream(temp); - s.importXML("/", iTemp, 0); - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - + VersionManagerImpl vm = (VersionManagerImpl) s.getVersionManager(); + vm.importXML(iTemp, (WorkspaceImpl) this.getSession().getWorkspace(), ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW); } finally { temp.delete(); @@ -282,22 +91,4 @@ temp.delete(); } } - - - private static void unprotect(NodeImpl parent) throws RepositoryException { - - NodeDefinitionImpl def = (NodeDefinitionImpl) parent.getDefinition(); - NodeDefImpl nd = (NodeDefImpl) def.unwrap(); - //TODO After restore should we W protect the node? - nd.setProtected(false); - if (!def.isProtected()) - System.out.println(def.getName()); - - NodeIterator it = parent.getNodes(); - - while (it.hasNext()) { - unprotect((NodeImpl) it.nextNode()); - } - - } } Index: /home/ntoper/workspace/backup/src/main/java/org/apache/jackrabbit/backup/WorkspaceBackup.java =================================================================== --- /home/ntoper/workspace/backup/src/main/java/org/apache/jackrabbit/backup/WorkspaceBackup.java (revision 429857) +++ /home/ntoper/workspace/backup/src/main/java/org/apache/jackrabbit/backup/WorkspaceBackup.java (working copy) @@ -150,7 +150,8 @@ FileInputStream iTemp = new FileInputStream(temp); //TODO add a parameter in the conf file to manage UUIDBehavior - s2.importXML(s2.getRootNode().getPath(), iTemp, 3); + s2.getWorkspace().importXML(s2.getRootNode().getPath(), iTemp, 3); + s2.logout(); } finally { wspXml.delete(); @@ -157,5 +158,4 @@ temp.delete(); } } - } Index: /home/ntoper/workspace/backup/src/test/backup.xml =================================================================== --- /home/ntoper/workspace/backup/src/test/backup.xml (revision 429857) +++ /home/ntoper/workspace/backup/src/test/backup.xml (working copy) @@ -7,6 +7,6 @@ - + \ No newline at end of file Index: /home/ntoper/workspace/backup/src/test/java/org/apache/jackrabbit/backup/BackupTest.java =================================================================== --- /home/ntoper/workspace/backup/src/test/java/org/apache/jackrabbit/backup/BackupTest.java (revision 429857) +++ /home/ntoper/workspace/backup/src/test/java/org/apache/jackrabbit/backup/BackupTest.java (working copy) @@ -129,8 +129,8 @@ */ //Delete the zip file if existing - //File zip = new File("myzip.zip"); - //zip.delete(); + File zip = new File("myzip.zip"); + zip.delete(); File zip2 = new File("myzip2.zip"); zip2.delete(); @@ -137,7 +137,7 @@ String[] argsBackup ="--zip myzip.zip --login username --password password --conf src/test/backup.xml backup repository.xml repository/".split(" "); - //LaunchBackup.main(argsBackup); + LaunchBackup.main(argsBackup); System.out.print("Backup done. "); //Launching restore in another repository instance