/******************************************************************************* * * Copyright (c) 2010, InfraDNA, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * * * *******************************************************************************/ package hudson.util.io; import hudson.FilePath.TarCompression; import java.io.IOException; import java.io.OutputStream; import java.io.Serializable; /** * Creates {@link Archiver} on top of a stream. * * @author Kohsuke Kawaguchi * @since 1.359 */ public abstract class ArchiverFactory implements Serializable { /** * Creates an archiver on top of the given stream. */ public abstract Archiver create(OutputStream out) throws IOException; /** * Uncompressed tar format. */ public static ArchiverFactory TAR = new TarArchiverFactory(TarCompression.NONE); /** * tar+gz */ public static ArchiverFactory TARGZ = new TarArchiverFactory(TarCompression.GZIP); /** * Zip format. */ public static ArchiverFactory ZIP = new ZipArchiverFactory(); private static final class TarArchiverFactory extends ArchiverFactory { private final TarCompression method; private TarArchiverFactory(TarCompression method) { this.method = method; } public Archiver create(OutputStream out) throws IOException { return new TarArchiver(method.compress(out)); } private static final long serialVersionUID = 1L; } private static final class ZipArchiverFactory extends ArchiverFactory { public Archiver create(OutputStream out) { return new ZipArchiver(out); } private static final long serialVersionUID = 1L; } private static final long serialVersionUID = 1L; }