git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270784 13f79535-47bb-0310-9956-ffa450edef68master
@@ -7,9 +7,8 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.BufferedOutputStream; | |||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | |||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
import org.apache.tools.bzip2.CBZip2OutputStream; | import org.apache.tools.bzip2.CBZip2OutputStream; | ||||
@@ -18,42 +17,17 @@ import org.apache.tools.bzip2.CBZip2OutputStream; | |||||
* non-compressed archives such as TAR files. | * non-compressed archives such as TAR files. | ||||
* | * | ||||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
*/ | */ | ||||
public class BZip2 | public class BZip2 | ||||
extends Pack | extends Pack | ||||
{ | { | ||||
protected void pack() | |||||
throws TaskException | |||||
private static final byte[] HEADER = new byte[]{(byte)'B', (byte)'Z'}; | |||||
protected OutputStream getPackingStream( OutputStream output ) | |||||
throws TaskException, IOException | |||||
{ | { | ||||
CBZip2OutputStream zOut = null; | |||||
try | |||||
{ | |||||
BufferedOutputStream bos = | |||||
new BufferedOutputStream( new FileOutputStream( zipFile ) ); | |||||
bos.write( 'B' ); | |||||
bos.write( 'Z' ); | |||||
zOut = new CBZip2OutputStream( bos ); | |||||
zipFile( source, zOut ); | |||||
} | |||||
catch( IOException ioe ) | |||||
{ | |||||
String msg = "Problem creating bzip2 " + ioe.getMessage(); | |||||
throw new TaskException( msg, ioe ); | |||||
} | |||||
finally | |||||
{ | |||||
if( zOut != null ) | |||||
{ | |||||
try | |||||
{ | |||||
// close up | |||||
zOut.close(); | |||||
} | |||||
catch( IOException e ) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
output.write( HEADER ); | |||||
return new CBZip2OutputStream( output ); | |||||
} | } | ||||
} | } |
@@ -7,8 +7,8 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | |||||
import java.util.zip.GZIPOutputStream; | import java.util.zip.GZIPOutputStream; | ||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
@@ -19,37 +19,14 @@ import org.apache.myrmidon.api.TaskException; | |||||
* @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | ||||
* @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
*/ | */ | ||||
public class GZip | public class GZip | ||||
extends Pack | extends Pack | ||||
{ | { | ||||
protected void pack() | |||||
throws TaskException | |||||
protected OutputStream getPackingStream( final OutputStream output ) | |||||
throws TaskException, IOException | |||||
{ | { | ||||
GZIPOutputStream zOut = null; | |||||
try | |||||
{ | |||||
zOut = new GZIPOutputStream( new FileOutputStream( zipFile ) ); | |||||
zipFile( source, zOut ); | |||||
} | |||||
catch( IOException ioe ) | |||||
{ | |||||
String msg = "Problem creating gzip " + ioe.getMessage(); | |||||
throw new TaskException( msg, ioe ); | |||||
} | |||||
finally | |||||
{ | |||||
if( zOut != null ) | |||||
{ | |||||
try | |||||
{ | |||||
// close up | |||||
zOut.close(); | |||||
} | |||||
catch( IOException e ) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
return new GZIPOutputStream( output ); | |||||
} | } | ||||
} | } |
@@ -9,88 +9,114 @@ package org.apache.tools.ant.taskdefs; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | |||||
import java.io.OutputStream; | import java.io.OutputStream; | ||||
import java.util.zip.GZIPOutputStream; | |||||
import org.apache.avalon.excalibur.io.IOUtil; | |||||
import org.apache.myrmidon.api.AbstractTask; | |||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
import org.apache.tools.ant.Task; | |||||
/** | /** | ||||
* Abstract Base class for pack tasks. | * Abstract Base class for pack tasks. | ||||
* | * | ||||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
*/ | */ | ||||
public abstract class Pack extends Task | |||||
public abstract class Pack | |||||
extends AbstractTask | |||||
{ | { | ||||
protected File source; | |||||
protected File zipFile; | |||||
private File m_src; | |||||
private File m_zipFile; | |||||
public void setSrc( File src ) | |||||
public void setSrc( final File src ) | |||||
{ | { | ||||
source = src; | |||||
m_src = src; | |||||
} | } | ||||
public void setZipfile( File zipFile ) | |||||
public void setZipfile( final File zipFile ) | |||||
{ | { | ||||
this.zipFile = zipFile; | |||||
m_zipFile = zipFile; | |||||
} | } | ||||
public void execute() | public void execute() | ||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
validate(); | validate(); | ||||
getLogger().info( "Building: " + zipFile.getAbsolutePath() ); | |||||
final String message = "Building: " + m_zipFile.getAbsolutePath(); | |||||
getLogger().info( message ); | |||||
pack(); | pack(); | ||||
} | } | ||||
protected abstract void pack() | |||||
throws TaskException; | |||||
private void pack() | |||||
throws TaskException | |||||
{ | |||||
OutputStream output = null; | |||||
try | |||||
{ | |||||
final FileOutputStream fileOutput = new FileOutputStream( getZipFile() ); | |||||
output = getPackingStream( fileOutput ); | |||||
copy( getSrc(), output ); | |||||
} | |||||
catch( final IOException ioe ) | |||||
{ | |||||
final String message = "Problem creating " + getName() + | |||||
":" + ioe.getMessage(); | |||||
throw new TaskException( message, ioe ); | |||||
} | |||||
finally | |||||
{ | |||||
IOUtil.shutdownStream( output ); | |||||
} | |||||
} | |||||
protected void zipFile( File file, OutputStream zOut ) | |||||
protected abstract OutputStream getPackingStream( OutputStream output ) | |||||
throws TaskException, IOException; | |||||
protected final void copy( final File file, final OutputStream output ) | |||||
throws IOException | throws IOException | ||||
{ | { | ||||
FileInputStream fIn = new FileInputStream( file ); | |||||
final FileInputStream input = new FileInputStream( file ); | |||||
try | try | ||||
{ | { | ||||
zipFile( fIn, zOut ); | |||||
IOUtil.copy( input, output ); | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
fIn.close(); | |||||
IOUtil.shutdownStream( input ); | |||||
} | } | ||||
} | } | ||||
private void validate() | private void validate() | ||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
if( zipFile == null ) | |||||
if( null == m_zipFile ) | |||||
{ | { | ||||
throw new TaskException( "zipfile attribute is required" ); | |||||
final String message = "zipfile attribute is required"; | |||||
throw new TaskException( message ); | |||||
} | } | ||||
if( source == null ) | |||||
if( null == m_src ) | |||||
{ | { | ||||
throw new TaskException( "src attribute is required" ); | |||||
final String message = "src attribute is required"; | |||||
throw new TaskException( message ); | |||||
} | } | ||||
if( source.isDirectory() ) | |||||
if( m_src.isDirectory() ) | |||||
{ | { | ||||
throw new TaskException( "Src attribute must not " + | |||||
"represent a directory!" ); | |||||
final String message = "Src attribute must not " + | |||||
"represent a directory!"; | |||||
throw new TaskException( message ); | |||||
} | } | ||||
} | } | ||||
private void zipFile( InputStream in, OutputStream zOut ) | |||||
throws IOException | |||||
protected final File getSrc() | |||||
{ | { | ||||
byte[] buffer = new byte[ 8 * 1024 ]; | |||||
int count = 0; | |||||
do | |||||
{ | |||||
zOut.write( buffer, 0, count ); | |||||
count = in.read( buffer, 0, buffer.length ); | |||||
} while( count != -1 ); | |||||
return m_src; | |||||
} | |||||
protected final File getZipFile() | |||||
{ | |||||
return m_zipFile; | |||||
} | } | ||||
} | } |
@@ -7,9 +7,8 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.BufferedOutputStream; | |||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | |||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
import org.apache.tools.bzip2.CBZip2OutputStream; | import org.apache.tools.bzip2.CBZip2OutputStream; | ||||
@@ -18,42 +17,17 @@ import org.apache.tools.bzip2.CBZip2OutputStream; | |||||
* non-compressed archives such as TAR files. | * non-compressed archives such as TAR files. | ||||
* | * | ||||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
*/ | */ | ||||
public class BZip2 | public class BZip2 | ||||
extends Pack | extends Pack | ||||
{ | { | ||||
protected void pack() | |||||
throws TaskException | |||||
private static final byte[] HEADER = new byte[]{(byte)'B', (byte)'Z'}; | |||||
protected OutputStream getPackingStream( OutputStream output ) | |||||
throws TaskException, IOException | |||||
{ | { | ||||
CBZip2OutputStream zOut = null; | |||||
try | |||||
{ | |||||
BufferedOutputStream bos = | |||||
new BufferedOutputStream( new FileOutputStream( zipFile ) ); | |||||
bos.write( 'B' ); | |||||
bos.write( 'Z' ); | |||||
zOut = new CBZip2OutputStream( bos ); | |||||
zipFile( source, zOut ); | |||||
} | |||||
catch( IOException ioe ) | |||||
{ | |||||
String msg = "Problem creating bzip2 " + ioe.getMessage(); | |||||
throw new TaskException( msg, ioe ); | |||||
} | |||||
finally | |||||
{ | |||||
if( zOut != null ) | |||||
{ | |||||
try | |||||
{ | |||||
// close up | |||||
zOut.close(); | |||||
} | |||||
catch( IOException e ) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
output.write( HEADER ); | |||||
return new CBZip2OutputStream( output ); | |||||
} | } | ||||
} | } |
@@ -7,8 +7,8 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | |||||
import java.util.zip.GZIPOutputStream; | import java.util.zip.GZIPOutputStream; | ||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
@@ -19,37 +19,14 @@ import org.apache.myrmidon.api.TaskException; | |||||
* @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | * @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a> | ||||
* @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a> | ||||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
*/ | */ | ||||
public class GZip | public class GZip | ||||
extends Pack | extends Pack | ||||
{ | { | ||||
protected void pack() | |||||
throws TaskException | |||||
protected OutputStream getPackingStream( final OutputStream output ) | |||||
throws TaskException, IOException | |||||
{ | { | ||||
GZIPOutputStream zOut = null; | |||||
try | |||||
{ | |||||
zOut = new GZIPOutputStream( new FileOutputStream( zipFile ) ); | |||||
zipFile( source, zOut ); | |||||
} | |||||
catch( IOException ioe ) | |||||
{ | |||||
String msg = "Problem creating gzip " + ioe.getMessage(); | |||||
throw new TaskException( msg, ioe ); | |||||
} | |||||
finally | |||||
{ | |||||
if( zOut != null ) | |||||
{ | |||||
try | |||||
{ | |||||
// close up | |||||
zOut.close(); | |||||
} | |||||
catch( IOException e ) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
return new GZIPOutputStream( output ); | |||||
} | } | ||||
} | } |
@@ -9,88 +9,114 @@ package org.apache.tools.ant.taskdefs; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | |||||
import java.io.OutputStream; | import java.io.OutputStream; | ||||
import java.util.zip.GZIPOutputStream; | |||||
import org.apache.avalon.excalibur.io.IOUtil; | |||||
import org.apache.myrmidon.api.AbstractTask; | |||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
import org.apache.tools.ant.Task; | |||||
/** | /** | ||||
* Abstract Base class for pack tasks. | * Abstract Base class for pack tasks. | ||||
* | * | ||||
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a> | ||||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
*/ | */ | ||||
public abstract class Pack extends Task | |||||
public abstract class Pack | |||||
extends AbstractTask | |||||
{ | { | ||||
protected File source; | |||||
protected File zipFile; | |||||
private File m_src; | |||||
private File m_zipFile; | |||||
public void setSrc( File src ) | |||||
public void setSrc( final File src ) | |||||
{ | { | ||||
source = src; | |||||
m_src = src; | |||||
} | } | ||||
public void setZipfile( File zipFile ) | |||||
public void setZipfile( final File zipFile ) | |||||
{ | { | ||||
this.zipFile = zipFile; | |||||
m_zipFile = zipFile; | |||||
} | } | ||||
public void execute() | public void execute() | ||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
validate(); | validate(); | ||||
getLogger().info( "Building: " + zipFile.getAbsolutePath() ); | |||||
final String message = "Building: " + m_zipFile.getAbsolutePath(); | |||||
getLogger().info( message ); | |||||
pack(); | pack(); | ||||
} | } | ||||
protected abstract void pack() | |||||
throws TaskException; | |||||
private void pack() | |||||
throws TaskException | |||||
{ | |||||
OutputStream output = null; | |||||
try | |||||
{ | |||||
final FileOutputStream fileOutput = new FileOutputStream( getZipFile() ); | |||||
output = getPackingStream( fileOutput ); | |||||
copy( getSrc(), output ); | |||||
} | |||||
catch( final IOException ioe ) | |||||
{ | |||||
final String message = "Problem creating " + getName() + | |||||
":" + ioe.getMessage(); | |||||
throw new TaskException( message, ioe ); | |||||
} | |||||
finally | |||||
{ | |||||
IOUtil.shutdownStream( output ); | |||||
} | |||||
} | |||||
protected void zipFile( File file, OutputStream zOut ) | |||||
protected abstract OutputStream getPackingStream( OutputStream output ) | |||||
throws TaskException, IOException; | |||||
protected final void copy( final File file, final OutputStream output ) | |||||
throws IOException | throws IOException | ||||
{ | { | ||||
FileInputStream fIn = new FileInputStream( file ); | |||||
final FileInputStream input = new FileInputStream( file ); | |||||
try | try | ||||
{ | { | ||||
zipFile( fIn, zOut ); | |||||
IOUtil.copy( input, output ); | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
fIn.close(); | |||||
IOUtil.shutdownStream( input ); | |||||
} | } | ||||
} | } | ||||
private void validate() | private void validate() | ||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
if( zipFile == null ) | |||||
if( null == m_zipFile ) | |||||
{ | { | ||||
throw new TaskException( "zipfile attribute is required" ); | |||||
final String message = "zipfile attribute is required"; | |||||
throw new TaskException( message ); | |||||
} | } | ||||
if( source == null ) | |||||
if( null == m_src ) | |||||
{ | { | ||||
throw new TaskException( "src attribute is required" ); | |||||
final String message = "src attribute is required"; | |||||
throw new TaskException( message ); | |||||
} | } | ||||
if( source.isDirectory() ) | |||||
if( m_src.isDirectory() ) | |||||
{ | { | ||||
throw new TaskException( "Src attribute must not " + | |||||
"represent a directory!" ); | |||||
final String message = "Src attribute must not " + | |||||
"represent a directory!"; | |||||
throw new TaskException( message ); | |||||
} | } | ||||
} | } | ||||
private void zipFile( InputStream in, OutputStream zOut ) | |||||
throws IOException | |||||
protected final File getSrc() | |||||
{ | { | ||||
byte[] buffer = new byte[ 8 * 1024 ]; | |||||
int count = 0; | |||||
do | |||||
{ | |||||
zOut.write( buffer, 0, count ); | |||||
count = in.read( buffer, 0, buffer.length ); | |||||
} while( count != -1 ); | |||||
return m_src; | |||||
} | |||||
protected final File getZipFile() | |||||
{ | |||||
return m_zipFile; | |||||
} | } | ||||
} | } |