View Javadoc
1   /**
2    *
3    * Copyright 2004 The Apache Software Foundation
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License");
6    * you may not use this file except in compliance with the License.
7    * You may obtain a copy of the License at
8    *
9    * http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.codehaus.plexus.archiver.bzip2;
18  
19  import java.io.IOException;
20  import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
21  import org.codehaus.plexus.archiver.ArchiverException;
22  import org.codehaus.plexus.archiver.util.Compressor;
23  import static org.codehaus.plexus.archiver.util.Streams.bufferedOutputStream;
24  import static org.codehaus.plexus.archiver.util.Streams.fileOutputStream;
25  
26  public class BZip2Compressor
27      extends Compressor
28  {
29  
30      private BZip2CompressorOutputStream zOut;
31  
32      /**
33       * perform the BZip2 compression operation.
34       */
35      @Override
36      public void compress()
37          throws ArchiverException
38      {
39          try
40          {
41              zOut = new BZip2CompressorOutputStream( bufferedOutputStream( fileOutputStream( getDestFile() ) ) );
42              // BUffering of the source stream seems to have little/no impact
43              compress( getSource(), zOut );
44          }
45          catch ( IOException ioe )
46          {
47              String msg = "Problem creating bzip2 " + ioe.getMessage();
48              throw new ArchiverException( msg, ioe );
49          }
50      }
51  
52      @Override
53      public void close()
54      {
55          try
56          {
57              if ( this.zOut != null )
58              {
59                  this.zOut.close();
60                  zOut = null;
61              }
62          }
63          catch ( final IOException e )
64          {
65              throw new ArchiverException( "Failure closing target.", e );
66          }
67      }
68  
69  }