Index: ArchiverFactory.java
===================================================================
--- ArchiverFactory.java	(revision 699147)
+++ ArchiverFactory.java	(working copy)
@@ -63,6 +63,20 @@
 	}
 	
 	/**
+	 * Unregisters an existing archiver in the factory.
+	 * The archiver must implement the archiver interface.
+	 * 
+	 * @param className full qualified archiver implementation
+	 * @throws ClassNotFoundException if the archiver class could not be found
+	 * @throws ArchiveException if the archiver is not in the list
+	 */
+	public static void unregisterArchiver(String className)
+	    throws ClassNotFoundException, ArchiveException {
+		Class clazz = Class.forName(className);
+		unregisterArchiver(clazz);
+	}
+	
+	/**
 	 * Registers a new archiver in the factory.
 	 * The archiver must implement the archiver interface and must
 	 * be an concrete implementation
@@ -87,6 +101,42 @@
 	}
 	
 	/**
+	 * Unregisters an existing archiver in the factory. It is assumed that the 
+	 * Objects in the archives list are all subclasses of Archive.
+	 * 
+	 * @param clazz full qualified archiver implementation
+	 * @throws ArchiveException if the archiver is not in the list
+	 */
+	public static void unregisterArchiver(Class clazz)
+		throws ArchiveException {
+		boolean anythingRemoved = false;
+		Iterator it = archives.iterator();
+		while (it.hasNext()) {
+			if (clazz.isInstance(it.next())){
+				it.remove();
+				anythingRemoved = true;
+			}
+		}
+		
+		if(!anythingRemoved){
+			throw new ArchiveException("Nothing removed. No instances of Class " + clazz.getName() + " found in the archive list.");
+		}
+	}
+	
+	/**
+	 * Removes all archivers from the factory.
+	 * 
+	 * @throws ArchiveException if the list is empty
+	 */
+	public static void unregisterAllArchives()
+		throws ArchiveException {
+		if (archives.size() == 0) {
+			throw new ArchiveException("There are no archivers in the list.");
+		}
+		archives.clear();
+	}
+	
+	/**
 	 * Returns an empty Archive, if an archiver could be found for this factory.
 	 * If two Archive-implementations with the same name are registered,
 	 * the first matching archiver will be instanciated.
