You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2006/07/02 23:55:45 UTC

svn commit: r418655 - in /jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit: backup/ core/

Author: jukka
Date: Sun Jul  2 14:55:45 2006
New Revision: 418655

URL: http://svn.apache.org/viewvc?rev=418655&view=rev
Log:
JCR-442: Merged the backup tool skeleton contributed by Nicolas Toper. (Work in progress)

Added:
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/Backup.java   (with props)
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java   (with props)
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java   (with props)
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupLauncher.java   (with props)
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java   (with props)
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java

Added: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/Backup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/Backup.java?rev=418655&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/Backup.java (added)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/Backup.java Sun Jul  2 14:55:45 2006
@@ -0,0 +1,55 @@
+/*
+ * 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.backup;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+
+/**
+ * This class is the abstract class of all resources to backup. If you need to add a new backuped resource
+ * extend Backup and implement both the save and restore methods.
+ *
+ * The constructor is called when instantiating the specific backup resource class through RepositoryBackup.
+ */
+public abstract class Backup {
+
+    RepositoryImpl repo;
+    BackupConfig conf;
+    String name;
+
+    /**
+     *
+     * @param repo The repository to backup
+     * @param conf The specific BackupConfig object (usually a subset of backup.xml)
+     * @param name Name of the resource to backup. Unique. Useful?
+     */
+    public Backup(RepositoryImpl repo, BackupConfig conf) {
+        this.repo = repo;
+        this.conf = conf;
+    }
+
+    public void setRepo(RepositoryImpl repo) {
+        this.repo = repo;
+    }
+
+    public RepositoryImpl getRepo() {
+        return this.repo;
+    }
+
+    public abstract void backup(BackupIOHandler out, BackupConfig conf);
+    public abstract void restore(BackupIOHandler in);
+
+}

Propchange: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/Backup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java?rev=418655&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java (added)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java Sun Jul  2 14:55:45 2006
@@ -0,0 +1,36 @@
+/*
+ * 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.backup;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+
+public class BackupConfig {
+
+    public BackupConfig() {
+        // TODO Auto-generated constructor stub
+    }
+
+    public Backup getBackup() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void setRepo(RepositoryImpl impl) {
+        // TODO Auto-generated method stub
+    }
+
+}

Propchange: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java?rev=418655&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java (added)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java Sun Jul  2 14:55:45 2006
@@ -0,0 +1,26 @@
+/*
+ * 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.backup;
+
+public interface BackupIOHandler {
+
+	void setMaxFileSize(int i);
+	int getMaxFileSize();
+	//Add reference to the file
+	// How to precise if in or out... Maybe not needed?
+
+}

Propchange: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupLauncher.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupLauncher.java?rev=418655&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupLauncher.java (added)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupLauncher.java Sun Jul  2 14:55:45 2006
@@ -0,0 +1,100 @@
+/*
+ * 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.backup;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+
+/**
+ * BackupLauncher is a command line tool and a demo tool for the backup tool. To
+ * get all available options please type BackupLauncher --help
+ * Used to launch a backup while the repository is inactive.
+ *
+ * @author Nicolas Toper <nt...@gmail.com>
+ * Date: 23-jun-06
+ */
+public class BackupLauncher {
+
+    BackupConfig conf;
+    RepositoryImpl repo;
+
+    /**
+     * The command line tool.
+     *
+     * BackupLauncher --zip "myzip.zip" --size 2 save
+     * BackupLauncher --zip "./myzip.zip" --size 2 restore
+     *
+     * -zip: where is the zip file (only implemented way to backup for now)
+     * -size in Go
+     *
+     * --help for help option
+     *
+     */
+    public static void main(String[] args) {
+
+        for (int i = 0; i < args.length; i++) {
+            if ( args[i].equals("--help")  || args.length == 0) {
+                usage();
+            }
+
+            //To finish
+            /* BackupIOHandler h = new ZipFileBackupIOHandler("mybackup.zip");
+             h.setMaxFileSize(2);*/
+            //repo.getBackupManager().save(h, config);
+            //path to repository.xml
+            // TODO Auto-generated method stub
+        }
+    }
+
+    /**
+     * Auxiliary method for main
+     *
+     */
+    private static void usage(){
+        System.out.println("options:\n --zip to specify the path of the zip file.\n --size (optional) max size of the file\n save|restore\n" +
+                "example 1: java BackupLauncher --zip \"myzip.zip\" --size 2 save " +
+        "example 2: java BackupLauncher --zip \"./myzip.zip\" --size 2 restore");
+        System.exit(0);
+    }
+
+    /**
+     * Constructor of BackupLauncher. Initiate the repository.
+     *
+     * @param String filename: name of the configuration file
+     */
+    public BackupLauncher(String filename) {
+        //this.conf = new BackupConfig(filename);
+        //How to launch the repository? JNDI?
+    }
+
+    public void backup(String out) throws AccessDeniedException, RepositoryException, IOException {
+        //repo.getBackupRepository();
+    }
+
+    /**
+     *
+     * @param filename
+     */
+    public void restore(FileInputStream file) {
+    }
+
+}

Propchange: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/BackupLauncher.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java?rev=418655&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java (added)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java Sun Jul  2 14:55:45 2006
@@ -0,0 +1,44 @@
+/*
+ * 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.backup;
+
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+
+/**
+ * @author ntoper
+ *
+ */
+public class RepositoryBackup extends Backup {
+
+    public RepositoryBackup(RepositoryImpl repo, BackupConfig conf) {
+        super(repo, conf);
+        // TODO Auto-generated constructor stub
+    }
+
+//  @Override
+    public void backup(BackupIOHandler out, BackupConfig conf) {
+        // TODO Auto-generated method stub
+    }
+    
+//  @Override
+    public void restore(BackupIOHandler in) {
+        // TODO Auto-generated method stub
+        
+    }
+
+}

Propchange: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java?rev=418655&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java (added)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java Sun Jul  2 14:55:45 2006
@@ -0,0 +1,31 @@
+/*
+ * 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.backup;
+
+public class ZipFileBackupIOHandler implements BackupIOHandler {
+
+    public void setMaxFileSize(int i) {
+    }
+
+    public int getMaxFileSize() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    //To finish...
+
+}

Propchange: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=418655&r1=418654&r2=418655&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Sun Jul  2 14:55:45 2006
@@ -21,6 +21,9 @@
 import EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock;
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.jackrabbit.api.JackrabbitRepository;
+import org.apache.jackrabbit.backup.BackupIOHandler;
+import org.apache.jackrabbit.backup.BackupConfig;
+import org.apache.jackrabbit.backup.RepositoryBackup;
 import org.apache.jackrabbit.core.config.FileSystemConfig;
 import org.apache.jackrabbit.core.config.LoginModuleConfig;
 import org.apache.jackrabbit.core.config.PersistenceManagerConfig;
@@ -1840,4 +1843,38 @@
             }
         }
     }
+
+    /**
+     *
+     * This method returns a RepositoryBackup object configured to save this repository.
+     *
+     * Some operations are needed to initiate the RepositoryBackup object properly before performing
+     * the backup or restore operation.
+     *
+     * @param BackupConfig conf: BackupConfig object containing all the parameters.
+     * @return RepositoryBackup configured
+     * @throws RepositoryException
+     * @throws AccessDeniedException
+     * @throws IoException
+     * @author: Nicolas Toper <nt...@gmail.com>
+     */
+    public RepositoryBackup getBackupRepository(BackupConfig conf, BackupIOHandler h) throws RepositoryException, IOException, AccessDeniedException {
+        conf.setRepo(this);
+        return (RepositoryBackup) conf.getBackup();
+    }
+
+    /**
+     * For restore operations since the
+     * @return RepositoryBackup to configure
+     * @param BackupIOHandler is a pointer to the file to restore
+     * @throws RepositoryException
+     * @throws IOException
+     * @throws AccessDeniedException
+     */
+    public RepositoryBackup getBackupRepository(BackupIOHandler source) throws RepositoryException, IOException, AccessDeniedException {
+        BackupConfig conf = new BackupConfig();
+        conf.setRepo(this);
+        return (RepositoryBackup) conf.getBackup();
+    }
+
 }