View Javadoc
1   /*
2    * Copyright (C) 2013 Google Inc. and others
3    *
4    * This program and the accompanying materials are made available under the
5    * terms of the Eclipse Distribution License v. 1.0 which is available at
6    * https://www.eclipse.org/org/documents/edl-v10.php.
7    *
8    * SPDX-License-Identifier: BSD-3-Clause
9    */
10  package org.eclipse.jgit.archive;
11  
12  import java.util.ArrayList;
13  import java.util.List;
14  
15  import org.eclipse.jgit.api.ArchiveCommand;
16  
17  /**
18   * Registers all format types from the org.eclipse.jgit.archive package for use
19   * via the ArchiveCommand API.
20   *
21   * See {@link org.eclipse.jgit.archive.FormatActivator} for an OSGi bundle
22   * activator that performs the same registration automatically.
23   */
24  public class ArchiveFormats {
25  	private static final List<String> myFormats = new ArrayList<>();
26  
27  	private static final void register(String name, ArchiveCommand.Format<?> fmt) {
28  		myFormats.add(name);
29  		ArchiveCommand.registerFormat(name, fmt);
30  	}
31  
32  	/**
33  	 * Register all included archive formats so they can be used
34  	 * as arguments to the ArchiveCommand.setFormat() method.
35  	 *
36  	 * Not thread-safe.
37  	 */
38  	public static void registerAll() {
39  		register("tar", new TarFormat()); //$NON-NLS-1$
40  		register("tgz", new TgzFormat()); //$NON-NLS-1$
41  		register("tbz2", new Tbz2Format()); //$NON-NLS-1$
42  		register("txz", new TxzFormat()); //$NON-NLS-1$
43  		register("zip", new ZipFormat()); //$NON-NLS-1$
44  	}
45  
46  	/**
47  	 * Clean up by deregistering all formats that were registered
48  	 * by registerAll().
49  	 *
50  	 * Not thread-safe.
51  	 */
52  	public static void unregisterAll() {
53  		for (String name : myFormats) {
54  			ArchiveCommand.unregisterFormat(name);
55  		}
56  		myFormats.clear();
57  	}
58  }