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/16 00:37:42 UTC
svn commit: r422307 - in /jackrabbit/trunk/contrib/backup/src/main/java/org:
./ apache/ apache/jackrabbit/ apache/jackrabbit/backup/
Author: jukka
Date: Sat Jul 15 15:37:41 2006
New Revision: 422307
URL: http://svn.apache.org/viewvc?rev=422307&view=rev
Log:
JCR-442: Applied Nicolas' patch (patch.txt [12336687]) to add the backup classes to contib/backup. Needed to make a few small changes to make it compile.
Added:
jackrabbit/trunk/contrib/backup/src/main/java/org/
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java (with props)
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java?rev=422307&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java Sat Jul 15 15:37:41 2006
@@ -0,0 +1,57 @@
+/*
+ * 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);
+ public abstract void restore(BackupIOHandler in);
+
+
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java?rev=422307&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java Sat Jul 15 15:37:41 2006
@@ -0,0 +1,141 @@
+/*
+ * 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.File;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Properties;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.config.ConfigurationException;
+import org.apache.jackrabbit.core.config.ConfigurationParser;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.InputSource;
+
+
+/**
+ * Backup configuration. This configuration class is used to
+ * create configured backup objects.
+ * <p>
+ * The contained configuration information are: the home directory and name
+ * of the repository, the access manager, file system and versioning
+ * configuration, repository index configuration, the workspace directory,
+ * the default workspace name, and the workspace configuration template. In
+ * addition the workspace configuration object keeps track of all configured
+ * workspaces.
+ */
+public class BackupConfig {
+
+ /** the default logger */
+ private static Logger log = LoggerFactory.getLogger(BackupConfig.class);
+
+ /**
+ * Convenience method that wraps the configuration file name into an
+ * {@link InputSource} and invokes the
+ * {@link #create(InputSource, String)} method.
+ *
+ * @param file repository configuration file name
+ * @param home repository home directory
+ * @return backup configuration
+ * @throws ConfigurationException on configuration errors
+ * @see #create(InputSource, String)
+ */
+ public static BackupConfig create(String file, String home)
+ throws ConfigurationException {
+ URI uri = new File(file).toURI();
+ return create(new InputSource(uri.toString()), home);
+ }
+
+ /**
+ * Convenience method that wraps the configuration URI into an
+ * {@link InputSource} and invokes the
+ * {@link #create(InputSource, String)} method.
+ *
+ * @param uri repository configuration URI
+ * @param home repository home directory
+ * @return backup configuration
+ * @throws ConfigurationException on configuration errors
+ * @see #create(InputSource, String)
+ */
+ public static BackupConfig create(URI uri, String home)
+ throws ConfigurationException {
+ return create(new InputSource(uri.toString()), home);
+ }
+
+ /**
+ * Convenience method that wraps the configuration input stream into an
+ * {@link InputSource} and invokes the
+ * {@link #create(InputSource, String)} method.
+ *
+ * @param input repository configuration input stream
+ * @param home repository home directory
+ * @return backup configuration
+ * @throws ConfigurationException on configuration errors
+ * @see #create(InputSource, String)
+ */
+ public static BackupConfig create(InputStream input, String home)
+ throws ConfigurationException {
+ return create(new InputSource(input), home);
+ }
+
+ /**
+ * Parses the given repository configuration document and returns the
+ * parsed and initialized repository configuration. The given repository
+ * home directory path will be used as the ${rep.home} parser variable.
+ * <p>
+ * Note that in addition to parsing the repository configuration, this
+ * method also initializes the configuration (creates the configured
+ * directories, etc.). The {@link ConfigurationParser} class should be
+ * used directly to just parse the configuration.
+ *
+ * @param xml repository configuration document
+ * @param home repository home directory
+ * @return repository configuration
+ * @throws ConfigurationException on configuration errors
+ */
+ public static BackupConfig create(InputSource xml, String home)
+ throws ConfigurationException {
+ Properties variables = new Properties();
+ variables.setProperty(
+ ConfigurationParser.REPOSITORY_HOME_VARIABLE, home);
+ ConfigurationParser parser = new ConfigurationParser(variables);
+
+ // TODO: Fix this
+ // BackupConfig config = parser.parseBackupConfig(xml);
+ // config.init();
+ // return config;
+ return null;
+ }
+
+
+ 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/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java?rev=422307&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java Sat Jul 15 15:37:41 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/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java?rev=422307&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java Sat Jul 15 15:37:41 2006
@@ -0,0 +1,205 @@
+/*
+ * 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.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.xml.sax.InputSource;
+
+/**
+ * LaunchBackup is a command line tool and a demo tool for the backup tool. To
+ * get all available options please type LaunchBackup --help
+ * Used to launch a backup while the repository is inactive.
+ *
+ * @author Nicolas Toper <nt...@gmail.com>
+ * Date: 23-jun-06
+ */
+public class LaunchBackup {
+
+ static BackupIOHandler h;
+ RepositoryImpl repo;
+ BackupConfig conf;
+ RepositoryConfig repoConf;
+ RepositoryBackup backup;
+
+
+
+ /**
+ * The command line tool.
+ *
+ * LaunchBackup --zip myzip.zip --size 2 --conf backup.xml backup repository.xml repository/
+ * LaunchBackup --zip ./myzip.zip --size 2 --conf backup.xml restore repository.xml repository/
+ *
+ * --zip: where is the zip file (only implemented way to backup for now)
+ * --size in Go
+ *
+ * --conf: path to the config file for the backup tool
+ *
+ * backup/restore: whether you want a backup or a restore
+ *
+ * repository.xml: path to the config file of the repository
+ *
+ * repository/ is the name of the repository
+ *
+ *
+ * --help for help option
+ * @throws RepositoryException
+ * @throws IOException
+ * @throws IOException
+ *
+ */
+ public static void main(String[] args) throws RepositoryException, AccessDeniedException, IOException {
+ // I have to declare all var here so they are not resetted out of the for.
+ String zipFile = null;
+ String confFile = null;
+ String home = null;
+ String repoConfFile = null;
+
+ //2 booleans in case the user specified nothing
+ boolean isBackup = false;
+ boolean isRestore = false;
+
+ //Parse the command line.
+ for (int i = 0; i < args.length; i++) {
+
+ if ( args[i].equals("--help") || args.length == 0) {
+ usage();
+ }
+
+ if (args[i].equals("--zip")){
+ zipFile = args[i + 1];
+ //We put it here because later we might offer other possibilities than only zip
+ h = new ZipFileBackupIOHandler(zipFile);
+ }
+
+
+ if (args[i].equals("--size") && !(h != null)){
+
+ Integer max = (new Integer(args[i+ 1]));
+ h.setMaxFileSize(max.intValue());
+ }
+
+ if (args[i].equals("--size") && !(h != null)){
+
+ Integer max = (new Integer(args[i+ 1]));
+ h.setMaxFileSize(max.intValue());
+ }
+
+
+ if (args[i].equals("--conf") && !(h != null)){
+
+ confFile = args[i + 1];
+
+ }
+
+ if (args[i].equals("backup") && isRestore == false ){
+ isBackup = true;
+ repoConfFile = args[i + 1];
+ home = args[i + 2];
+
+ }
+
+ if (args[i].equals("restore") && isBackup == false ){
+ isRestore = true;
+ repoConfFile = args[i + 1];
+ home = args[i + 2];
+ }
+ }
+
+ LaunchBackup launch = new LaunchBackup(repoConfFile, home, confFile);
+
+ //We need to shutdown properly the repository whatever happens
+ try {
+ //Launch backup
+ if (isBackup) {
+ launch.backup(h);
+ }
+ //Launch restore
+ else if (isRestore) {
+ launch.restore(h);
+ }
+ //Launch nothing (if nothing specified
+ else {
+ usage();
+ }
+ }
+ finally
+ {
+ launch.shutdown();
+ }
+ }
+
+
+
+ /**
+ * Auxiliary method for main
+ *
+ */
+ private static void usage(){
+ System.out.println("todo: cut and paste of the comment when the project is over");
+ System.exit(0);
+ }
+
+ /**
+ * Constructor of LaunchBackup. Initiate the repository.
+ *
+ * @param String filename: name of the configuration file
+ * @throws RepositoryException
+ * @throws FileNotFoundException
+ */
+ public LaunchBackup(String repoConfFile, String home, String backupConfFile) throws RepositoryException, FileNotFoundException {
+ //Launch first the repository
+ this.repoConf = RepositoryConfig.create(repoConfFile, home);
+ this.repo = RepositoryImpl.create(this.repoConf);
+
+ //Create the backupConfig object
+ FileReader fr = new FileReader(backupConfFile);
+ InputSource xml = new InputSource(fr);
+ this.conf = BackupConfig.create(xml, home);
+ this.backup = RepositoryBackup.create(this.conf);
+ }
+
+ /**
+ * Backup a repository
+ *
+ * @param BackupIOHandler h a reference wher to backup
+ */
+ public void backup(BackupIOHandler h) throws AccessDeniedException, RepositoryException, IOException {
+ this.backup.backup(h);
+ }
+
+ /**
+ *Restore a repository
+ *
+ * @param BackupIOHandler h a reference to the backup to restore
+ */
+ public void restore(BackupIOHandler h) {
+ this.backup.restore(h);
+ }
+
+ private void shutdown() {
+ this.repo.shutdown();
+ }
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java?rev=422307&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java Sat Jul 15 15:37:41 2006
@@ -0,0 +1,54 @@
+/*
+ * 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
+
+ }
+
+ public static RepositoryBackup create(BackupConfig conf2) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void backup(BackupIOHandler out) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java?rev=422307&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java Sat Jul 15 15:37:41 2006
@@ -0,0 +1,35 @@
+/*
+ * 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 {
+
+ int maxFileSize;
+
+ public ZipFileBackupIOHandler(String zipFile) {
+ // TODO Auto-generated constructor stub
+ }
+
+ public void setMaxFileSize(int i) {
+ this.maxFileSize = i;
+ }
+
+ public int getMaxFileSize() {
+ return this.maxFileSize;
+ }
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java
------------------------------------------------------------------------------
svn:eol-style = native