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/19 21:21:19 UTC
svn commit: r423575 -
/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/
Author: jukka
Date: Wed Jul 19 12:21:19 2006
New Revision: 423575
URL: http://svn.apache.org/viewvc?rev=423575&view=rev
Log:
JCR-442: Committed Nicolas' latest contrib/backup changes (patch-backup-060719.txt)
Added:
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfigurationParser.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ManagerBackup.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryConfigBackup.java (with props)
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/SizeException.java (with props)
Modified:
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java
jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java
Modified: 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=423575&r1=423574&r2=423575&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java (original)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/Backup.java Wed Jul 19 12:21:19 2006
@@ -22,13 +22,12 @@
* 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.
+ * The constructor is called when instantiating the specific backup resource class through ManagerBackup.
*/
public abstract class Backup {
RepositoryImpl repo;
BackupConfig conf;
- String name;
/**
*
@@ -40,17 +39,25 @@
this.repo = repo;
this.conf = conf;
}
-
- public void setRepo(RepositoryImpl repo) {
- this.repo = repo;
+
+ public Backup() {
}
public RepositoryImpl getRepo() {
return this.repo;
}
-
- public abstract void backup(BackupIOHandler out);
- public abstract void restore(BackupIOHandler in);
+
+ /*
+ * Each ResourceBackup is responsible to handle backup of their content + configuration
+ *
+ * For each resource
+ * Test maxFileSize
+ * Zip the whole workingFolder
+ * check the checksum
+ * Send it to out
+ */
+ public abstract void backup(BackupIOHandler h);
+ public abstract void restore(BackupIOHandler h);
Modified: 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=423575&r1=423574&r2=423575&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java (original)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfig.java Wed Jul 19 12:21:19 2006
@@ -17,16 +17,14 @@
package org.apache.jackrabbit.backup;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
+import java.util.Collection;
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.apache.jackrabbit.core.config.PersistenceManagerConfig;
import org.xml.sax.InputSource;
@@ -34,17 +32,16 @@
* 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.
+ * It will send different backup object, according to the expected type
+ * (ManagerBackup or WorkspaceBackup for instance).
+ *
*/
public class BackupConfig {
-
- /** the default logger */
- private static Logger log = LoggerFactory.getLogger(BackupConfig.class);
+
+ private PersistenceManagerConfig pmc;
+ private File workFolder;
+ private Collection allResources;
+ private String xml;
/**
* Convenience method that wraps the configuration file name into an
@@ -55,12 +52,17 @@
* @param home repository home directory
* @return backup configuration
* @throws ConfigurationException on configuration errors
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
+ * @throws IOException
* @see #create(InputSource, String)
*/
- public static BackupConfig create(String file, String home)
- throws ConfigurationException {
+ public static BackupConfig create(String file)
+ throws ConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException, IOException {
URI uri = new File(file).toURI();
- return create(new InputSource(uri.toString()), home);
+ return create(new InputSource(uri.toString()));
}
/**
@@ -72,11 +74,16 @@
* @param home repository home directory
* @return backup configuration
* @throws ConfigurationException on configuration errors
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
+ * @throws IOException
* @see #create(InputSource, String)
*/
- public static BackupConfig create(URI uri, String home)
- throws ConfigurationException {
- return create(new InputSource(uri.toString()), home);
+ public static BackupConfig create(URI uri)
+ throws ConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException, IOException {
+ return create(new InputSource(uri.toString()));
}
/**
@@ -88,54 +95,85 @@
* @param home repository home directory
* @return backup configuration
* @throws ConfigurationException on configuration errors
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
+ * @throws IOException
* @see #create(InputSource, String)
*/
public static BackupConfig create(InputStream input, String home)
- throws ConfigurationException {
- return create(new InputSource(input), home);
+ throws ConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException, IOException {
+ return create(new InputSource(input));
}
/**
* 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.
+ * home directory workFolder 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
+ * directories, etc.). The {@link RepositoryConfigurationParser} 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
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
+ * @throws IOException
*/
- 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 static BackupConfig create(InputSource xml)
+ throws ConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException, IOException {
+ BackupConfigurationParser parser = new BackupConfigurationParser(new Properties());
+
+ BackupConfig config = parser.parseBackupConfig(xml);
+
+ return config;
+ }
+
+
+
+ //TODO see if path is really useful?
+ public BackupConfig(PersistenceManagerConfig pmc, File path, Collection allResources) throws IOException {
+
+ //Logic application: not in the parser: this code has to be here
+ if (!(path.isDirectory() && path.canWrite())) {
+ throw new IOException();
+ }
+
+ this.pmc = pmc;
+ this.workFolder = path;
+ this.allResources = allResources;
}
+ public Collection getAllResources() {
+ return allResources;
+ }
- public BackupConfig() {
- // TODO Auto-generated constructor stub
+ public File getWorkFolder() {
+ return workFolder;
}
+ public PersistenceManagerConfig getPmc() {
+ return pmc;
+ }
+
+ /*
+ * Useful?
+ */
public Backup getBackup() {
// TODO Auto-generated method stub
return null;
}
- public void setRepo(RepositoryImpl impl) {
- // TODO Auto-generated method stub
+ public String getXml() {
+ return xml;
}
+
}
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfigurationParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfigurationParser.java?rev=423575&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfigurationParser.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfigurationParser.java Wed Jul 19 12:21:19 2006
@@ -0,0 +1,176 @@
+/*
+ * 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.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import java.util.Vector;
+
+import org.apache.jackrabbit.core.config.ConfigurationException;
+import org.apache.jackrabbit.core.config.ConfigurationParser;
+import org.apache.jackrabbit.core.config.PersistenceManagerConfig;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+/**
+ * @author ntoper
+ *
+ */
+public class BackupConfigurationParser extends ConfigurationParser {
+
+ private static final String WORKING_FOLDER = "WorkingFolder";
+ private static final String WORKING_FOLDER_ATTRIBUTE = "path";
+ private static final String RESOURCES = "Resources";
+ private static final String RESOURCE = "Resource";
+ private static final String SAVING_CLASS = "savingClass";
+
+ /**
+ * @param variables
+ */
+ public BackupConfigurationParser(Properties variables) {
+ super(variables);
+ }
+
+
+ /*
+ * A static method to get the XML conf file and return it as a String.
+ * It is static since it doesn't have to be used with this configuration XML file.
+ *
+ * TODO: where is the best place for this method?
+ *
+ * @param the InputSource
+ */
+ public static String toXmlString(InputSource xml) throws IOException {
+
+ String line;
+ StringBuffer content = new StringBuffer();
+ BufferedReader readBuffer = new BufferedReader(xml.getCharacterStream());
+
+ while((line = readBuffer.readLine()) != null){
+ content.append(line);
+ content.append("\r\n");
+ }
+ readBuffer.close();
+ return content.toString();
+ }
+
+
+ /**
+ * Parses backup? configuration. Backup configuration uses the
+ * following format:
+ * <p>
+ * TODO comment. See wiki for format
+ * @param xml repository configuration document
+ * @return repository configuration
+ * @throws ConfigurationException if the configuration is broken
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
+ * @throws IOException
+ * @see #parseBeanConfig(Element, String)
+ * @see #parseVersioningConfig(Element)
+ */
+ public BackupConfig parseBackupConfig(InputSource xml)
+ throws ConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException, IOException {
+
+ Element root = parseXML(xml);
+
+ //Working Folder
+ Element workingFolder = getElement(root, WORKING_FOLDER);
+ File path = new File(workingFolder.getAttribute(WORKING_FOLDER_ATTRIBUTE));
+
+ //Persistence Manager
+ PersistenceManagerConfig pmc = this.parsePersistenceManagerConfig(root);
+
+ //Management of resources tag
+ Element resources = this.getElement(root, RESOURCES);
+ Collection allResources = this.parseResourcesConfig(resources);
+
+ return new BackupConfig(pmc, path, allResources);
+ }
+
+
+ /**
+ * TODO: to put in ConfigurationParser?
+ *
+ * Returns the named children of the given parent element.
+ *
+ * @param parent parent element
+ * @param name name of the child element
+ * @param required indicates if the child element is required
+ * @return named children elements, or <code>null</code> if not found
+ */
+ protected List getElements(Element parent, String name) {
+ NodeList children = parent.getChildNodes();
+ Vector selected = new Vector(10, 10);
+ for (int i = 0; i < children.getLength(); i++) {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE
+ && name.equals(child.getNodeName())) {
+
+ selected.addElement((Element) child);
+ }
+ }
+ if (selected.size() == 0){
+ return null;
+ }
+ else
+ {
+ selected.trimToSize();
+ return selected;
+ }
+ }
+
+
+ /*
+ * For now only support of all workspace backup. I think it is actually simpler to manage on the end-user side.
+ *
+ * Pre-condition: there are resource tags in the conf file (otherwise there is a problem in the backup)
+ */
+ private Collection parseResourcesConfig( Element root) throws ConfigurationException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException {
+
+ /*
+ * For each resource
+ * get class and instantiate
+ * addResource to ManagerBackup
+ */
+ Vector objects = new Vector();
+ Vector resources = (Vector) this.getElements(root, RESOURCE);
+ Iterator it = resources.iterator();
+
+ while (it.hasNext()) {
+ //We don't care about the name. It is here only for humans: only the savingClass is important
+ //Instantiate it and put it in the collection.
+ Element resource = (Element) it.next();
+ String savingClass = resource.getAttribute(SAVING_CLASS);
+ Class c = Class.forName(savingClass);
+ objects.addElement( (Backup) c.newInstance());
+
+
+ }
+ return objects;
+
+ }
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupConfigurationParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: 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=423575&r1=423574&r2=423575&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java (original)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/BackupIOHandler.java Wed Jul 19 12:21:19 2006
@@ -16,11 +16,17 @@
*/
package org.apache.jackrabbit.backup;
-public interface BackupIOHandler {
+import java.io.FileNotFoundException;
- void setMaxFileSize(int i);
- int getMaxFileSize();
+public interface BackupIOHandler {
+
+ int getMaxFileSize();
+ void setMaxFileSize(int i);
//Add reference to the file
// How to precise if in or out... Maybe not needed?
+ void close();
+ void initBackup() throws FileNotFoundException;
+ void initRestore();
+ void init();
}
Modified: 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=423575&r1=423574&r2=423575&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java (original)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/LaunchBackup.java Wed Jul 19 12:21:19 2006
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.backup;
-import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
@@ -41,7 +40,7 @@
RepositoryImpl repo;
BackupConfig conf;
RepositoryConfig repoConf;
- RepositoryBackup backup;
+ ManagerBackup backup;
@@ -67,9 +66,13 @@
* @throws RepositoryException
* @throws IOException
* @throws IOException
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
*
*/
- public static void main(String[] args) throws RepositoryException, AccessDeniedException, IOException {
+ public static void main(String[] args) throws RepositoryException, AccessDeniedException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException {
// I have to declare all var here so they are not resetted out of the for.
String zipFile = null;
String confFile = null;
@@ -93,21 +96,15 @@
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)){
+ 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)){
+ if (args[i].equals("--conf")){
confFile = args[i + 1];
@@ -127,16 +124,18 @@
}
}
- LaunchBackup launch = new LaunchBackup(repoConfFile, home, confFile);
+ LaunchBackup launch = null;
//We need to shutdown properly the repository whatever happens
try {
//Launch backup
if (isBackup) {
- launch.backup(h);
+ launch = new LaunchBackup(repoConfFile, home, confFile);
+ launch.backup(h);
}
//Launch restore
else if (isRestore) {
+ launch = new LaunchBackup();
launch.restore(h);
}
//Launch nothing (if nothing specified
@@ -146,7 +145,8 @@
}
finally
{
- launch.shutdown();
+ if (launch !=null)
+ launch.shutdown();
}
}
@@ -166,27 +166,43 @@
*
* @param String filename: name of the configuration file
* @throws RepositoryException
- * @throws FileNotFoundException
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ * @throws ClassNotFoundException
+ * @throws SizeException
+ * @throws IOException
*/
- public LaunchBackup(String repoConfFile, String home, String backupConfFile) throws RepositoryException, FileNotFoundException {
+ public LaunchBackup(String repoConfFile, String home, String backupConfFile) throws RepositoryException, ClassNotFoundException, InstantiationException, IllegalAccessException, SizeException, IOException {
//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);
+ this.conf = BackupConfig.create(xml);
+ this.backup = ManagerBackup.create(this.repo, this.conf);
+ }
+
+ /**
+ * Used for restore operations only
+ *
+ */
+
+ public LaunchBackup() {
+ // TODO Auto-generated constructor stub
}
+
+
/**
* Backup a repository
*
- * @param BackupIOHandler h a reference wher to backup
+ * @param BackupIOHandler h a reference where to backup
*/
public void backup(BackupIOHandler h) throws AccessDeniedException, RepositoryException, IOException {
- this.backup.backup(h);
+ this.backup.backup(h);
}
/**
@@ -195,7 +211,7 @@
* @param BackupIOHandler h a reference to the backup to restore
*/
public void restore(BackupIOHandler h) {
- this.backup.restore(h);
+ this.backup.restore(h);
}
private void shutdown() {
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ManagerBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ManagerBackup.java?rev=423575&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ManagerBackup.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ManagerBackup.java Wed Jul 19 12:21:19 2006
@@ -0,0 +1,88 @@
+/*
+ * 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.util.Collection;
+import java.util.Iterator;
+import org.apache.jackrabbit.core.RepositoryImpl;
+
+/**
+ * This class manages the backup/restore process. It is responsible to transmit it to the BackupIOHandler and to add the repository to the
+ * BackupConfig.
+ *
+ * It uses a work folder to get first all backup/restore information, zip them and send them to the handler.
+ *
+ * @author ntoper
+ *
+ */
+public class ManagerBackup extends Backup {
+
+ public ManagerBackup(RepositoryImpl repo, BackupConfig conf) {
+ super(repo, conf);
+
+ //The repository is a special Resource: it is added here to the list of resource
+ // It is not in the XML Conf file to make it more generic
+ this.conf.getAllResources().add(new RepositoryBackup(repo, conf));
+ }
+
+
+ public static ManagerBackup create(RepositoryImpl impl, BackupConfig conf2) {
+ return new ManagerBackup(impl, conf2);
+ }
+ /**
+ * Used to backup the repository and all subclasses. Call all classes when needed.
+ * This class stores the backup config file also. (simplify its fetching and logical since it's not a configurable resource)
+ *
+ * TODO visibility of the conf is huge: each ResourceBackup can get and set others resources modifiers. Is it really bad?
+ *
+ * @param The BackupIOHandler where the backup will be saved
+ *
+ */
+ public void backup(BackupIOHandler h) {
+ /* This method calls alternatively each backup method of each <Resource>Backup.
+ * It is responsible to initiate and close the zipFile.
+ * Each backup method, use the BackupIOHandler to write the file directly.
+ */
+
+ try {
+
+ h.init();
+ Collection resources = this.conf.getAllResources();
+
+
+ Iterator it = resources.iterator();
+
+ while (it.hasNext()) {
+ Backup b = (Backup) it.next();
+ b.backup(h);
+ }
+ }
+ finally {
+ h.close();
+ }
+ }
+
+ public void restore(BackupIOHandler h) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ManagerBackup.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: 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=423575&r1=423574&r2=423575&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java (original)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryBackup.java Wed Jul 19 12:21:19 2006
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.backup;
-
import org.apache.jackrabbit.core.RepositoryImpl;
/**
@@ -25,30 +24,33 @@
*/
public class RepositoryBackup extends Backup {
+ /**
+ * @param repo
+ * @param conf
+ */
public RepositoryBackup(RepositoryImpl repo, BackupConfig conf) {
super(repo, conf);
// TODO Auto-generated constructor stub
}
-// @Override
- public void backup(BackupIOHandler out, BackupConfig conf) {
+ /**
+ *
+ */
+ public RepositoryBackup() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+
+ public void backup(BackupIOHandler h) {
// TODO Auto-generated method stub
+
}
-
-// @Override
- public void restore(BackupIOHandler in) {
+
+ public void restore(BackupIOHandler h) {
// 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
-
- }
}
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryConfigBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryConfigBackup.java?rev=423575&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryConfigBackup.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryConfigBackup.java Wed Jul 19 12:21:19 2006
@@ -0,0 +1,36 @@
+package org.apache.jackrabbit.backup;
+
+public class RepositoryConfigBackup extends Backup {
+
+ public RepositoryConfigBackup() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+
+
+
+
+ public void backup(BackupIOHandler h) {
+
+ /*if (h.getClass().toString().equals("ZipFileBackupIOHandler"))
+ {
+ }
+ else
+ */
+ }
+
+
+
+ public void restore(BackupIOHandler h) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+
+
+
+
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/RepositoryConfigBackup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/SizeException.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/SizeException.java?rev=423575&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/SizeException.java (added)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/SizeException.java Wed Jul 19 12:21:19 2006
@@ -0,0 +1,30 @@
+package org.apache.jackrabbit.backup;
+
+public class SizeException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public SizeException() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public SizeException(String arg0) {
+ super(arg0);
+ // TODO Auto-generated constructor stub
+ }
+
+ public SizeException(String arg0, Throwable arg1) {
+ super(arg0, arg1);
+ // TODO Auto-generated constructor stub
+ }
+
+ public SizeException(Throwable arg0) {
+ super(arg0);
+ // TODO Auto-generated constructor stub
+ }
+
+}
Propchange: jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/SizeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: 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=423575&r1=423574&r2=423575&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java (original)
+++ jackrabbit/trunk/contrib/backup/src/main/java/org/apache/jackrabbit/backup/ZipFileBackupIOHandler.java Wed Jul 19 12:21:19 2006
@@ -16,12 +16,32 @@
*/
package org.apache.jackrabbit.backup;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+
+/**
+ * Question: ZipFile
+ *
+ * @author ntoper
+ *
+ */
public class ZipFileBackupIOHandler implements BackupIOHandler {
int maxFileSize;
+ File zip;
+ FileInputStream fin;
+ FileChannel fc;
+ private ByteBuffer buffer;
+ private FileOutputStream fout;
+
public ZipFileBackupIOHandler(String zipFile) {
- // TODO Auto-generated constructor stub
+ this.zip = new File(zipFile);
+ this.buffer = ByteBuffer.allocateDirect(2048);
}
public void setMaxFileSize(int i) {
@@ -31,5 +51,50 @@
public int getMaxFileSize() {
return this.maxFileSize;
}
+
+ public void close() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void init() {
+ //Useful?
+ this.buffer.clear();
+ }
+
+ public void initBackup() throws FileNotFoundException {
+ this.fout = new FileOutputStream(this.zip);
+ this.fc = this.fin.getChannel();
+ }
+
+ public void initRestore() {
+ try {
+ this.fin = new FileInputStream(this.zip);
+ } catch (FileNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ this.fc = this.fin.getChannel();
+
+ }
+
+
+
+
+ /**
+ * Create a directory per resources
+ * Backup the resource and zip it
+ * @param string
+ * @param content
+ */
+ /* private void writeFile(String string, String content) {
+ File conf = new File();
+ FileWriter fw = new FileWriter(cheminAbstraitSortie);
+ BufferedWriter tamponEcriture = new BufferedWriter(fluxEcritureTexte);
+ tamponEcriture.write(xml);
+ tamponEcriture.flush();
+ tamponEcriture.close();
+
+ } */
}