Browse Source

Move g/b zip stuff into new library

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270787 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
f0aec0feb7
15 changed files with 47 additions and 431 deletions
  1. +7
    -0
      proposal/myrmidon/build.xml
  2. +1
    -1
      proposal/myrmidon/src/java/org/apache/antlib/archive/BUnzip2.java
  3. +1
    -1
      proposal/myrmidon/src/java/org/apache/antlib/archive/BZip2.java
  4. +1
    -1
      proposal/myrmidon/src/java/org/apache/antlib/archive/GUnzip.java
  5. +1
    -1
      proposal/myrmidon/src/java/org/apache/antlib/archive/GZip.java
  6. +1
    -1
      proposal/myrmidon/src/java/org/apache/antlib/archive/Pack.java
  7. +4
    -4
      proposal/myrmidon/src/java/org/apache/antlib/archive/Unpack.java
  8. +0
    -33
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/BZip2.java
  9. +0
    -37
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/GUnzip.java
  10. +0
    -32
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/GZip.java
  11. +21
    -0
      proposal/myrmidon/src/make/sample.ant
  12. +10
    -0
      proposal/myrmidon/src/manifest/archive-ant-descriptor.xml
  13. +0
    -44
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/BUnzip2.java
  14. +0
    -122
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Pack.java
  15. +0
    -154
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Unpack.java

+ 7
- 0
proposal/myrmidon/build.xml View File

@@ -350,6 +350,13 @@ Legal:
</zipfileset>
</jar>

<jar jarfile="${build.lib}/archive.atl" basedir="${build.classes}">
<include name="org/apache/antlib/archive/**" />
<zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">
<include name="archive-ant-descriptor.xml"/>
</zipfileset>
</jar>

<jar jarfile="${build.lib}/cvslib.atl" basedir="${build.classes}">
<include name="org/apache/antlib/cvslib/**" />
<zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml">


proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/BUnzip2.java → proposal/myrmidon/src/java/org/apache/antlib/archive/BUnzip2.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;
package org.apache.antlib.archive;

import java.io.IOException;
import java.io.InputStream;

proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/BZip2.java → proposal/myrmidon/src/java/org/apache/antlib/archive/BZip2.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;
package org.apache.antlib.archive;

import java.io.IOException;
import java.io.OutputStream;

proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/GUnzip.java → proposal/myrmidon/src/java/org/apache/antlib/archive/GUnzip.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;
package org.apache.antlib.archive;

import java.io.IOException;
import java.io.InputStream;

proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/GZip.java → proposal/myrmidon/src/java/org/apache/antlib/archive/GZip.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;
package org.apache.antlib.archive;

import java.io.IOException;
import java.io.OutputStream;

proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Pack.java → proposal/myrmidon/src/java/org/apache/antlib/archive/Pack.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;
package org.apache.antlib.archive;

import java.io.File;
import java.io.FileInputStream;

proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Unpack.java → proposal/myrmidon/src/java/org/apache/antlib/archive/Unpack.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;
package org.apache.antlib.archive;

import java.io.File;
import java.io.FileInputStream;
@@ -45,12 +45,12 @@ public abstract class Unpack
{
validate();

final File source = getSrc();
final File src = getSrc();
final File dest = getDest();

if( source.lastModified() > dest.lastModified() )
if( src.lastModified() > dest.lastModified() )
{
final String message = "Expanding " + source.getAbsolutePath() +
final String message = "Expanding " + src.getAbsolutePath() +
" to " + dest.getAbsolutePath();
getLogger().info( message );


+ 0
- 33
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/BZip2.java View File

@@ -1,33 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;

import java.io.IOException;
import java.io.OutputStream;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.bzip2.CBZip2OutputStream;

/**
* Compresses a file with the BZip2 algorithm. Normally used to compress
* non-compressed archives such as TAR files.
*
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class BZip2
extends Pack
{
private static final byte[] HEADER = new byte[]{(byte)'B', (byte)'Z'};

protected OutputStream getPackingStream( OutputStream output )
throws TaskException, IOException
{
output.write( HEADER );
return new CBZip2OutputStream( output );
}
}

+ 0
- 37
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/GUnzip.java View File

@@ -1,37 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;

import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPInputStream;
import org.apache.myrmidon.api.TaskException;

/**
* Expands a file that has been compressed with the GZIP algorithm. Normally
* used to compress non-compressed archives such as TAR files.
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/
public class GUnzip
extends Unpack
{
private final static String DEFAULT_EXTENSION = ".gz";

protected String getDefaultExtension()
{
return DEFAULT_EXTENSION;
}

protected InputStream getUnpackingStream( InputStream input )
throws TaskException, IOException
{
return new GZIPInputStream( input );
}
}

+ 0
- 32
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/GZip.java View File

@@ -1,32 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;

import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.GZIPOutputStream;
import org.apache.myrmidon.api.TaskException;

/**
* Compresses a file with the GZIP algorithm. Normally used to compress
* non-compressed archives such as TAR files.
*
* @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 <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class GZip
extends Pack
{
protected OutputStream getPackingStream( final OutputStream output )
throws TaskException, IOException
{
return new GZIPOutputStream( output );
}
}

+ 21
- 0
proposal/myrmidon/src/make/sample.ant View File

@@ -169,5 +169,26 @@ Legal:
<log message-ref="refme2"/>
</target>

<target name="gzip-test">
<property name="zip" value="../../dist/bin/sample.gz" />
<property name="unzip" value="../../dist/bin/sample.txt" />

<gzip src="sample.ant" zipfile="${zip}"/>
<log message="Gzipped file!"/>

<gunzip src="${zip}" dest="${unzip}"/>
<log message="Ungzipped file!"/>
</target>

<target name="bzip2-test">
<property name="zip" value="../../dist/bin/sample.gz" />
<property name="unzip" value="../../dist/bin/sample.txt" />

<bzip2 src="sample.ant" zipfile="${zip}"/>
<log message="Gzipped file!"/>

<bunzip2 src="${zip}" dest="${unzip}"/>
<log message="Ungzipped file!"/>
</target>

</project>

+ 10
- 0
proposal/myrmidon/src/manifest/archive-ant-descriptor.xml View File

@@ -0,0 +1,10 @@
<ant-lib>

<types>
<task name="bunzip2" classname="org.apache.antlib.archive.BUnzip2" />
<task name="bzip2" classname="org.apache.antlib.archive.BZip2" />
<task name="gunzip" classname="org.apache.antlib.archive.GUnzip" />
<task name="gzip" classname="org.apache.antlib.archive.GZip" />
</types>

</ant-lib>

+ 0
- 44
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/BUnzip2.java View File

@@ -1,44 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;

import java.io.IOException;
import java.io.InputStream;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.bzip2.CBZip2InputStream;

/**
* Expands a file that has been compressed with the BZIP2 algorithm. Normally
* used to compress non-compressed archives such as TAR files.
*
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/
public class BUnzip2
extends Unpack
{
private final static String DEFAULT_EXTENSION = ".bz2";

protected String getDefaultExtension()
{
return DEFAULT_EXTENSION;
}

protected InputStream getUnpackingStream( final InputStream input )
throws TaskException, IOException
{
final int b1 = input.read();
final int b2 = input.read();
if( b1 != 'B' || b2 != 'Z' )
{
final String message = "Invalid bz2 file.";
throw new TaskException( message );
}

return new CBZip2InputStream( input );
}
}

+ 0
- 122
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Pack.java View File

@@ -1,122 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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;

/**
* Abstract Base class for pack tasks.
*
* @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 AbstractTask
{
private File m_src;
private File m_zipFile;

public void setSrc( final File src )
{
m_src = src;
}

public void setZipfile( final File zipFile )
{
m_zipFile = zipFile;
}

public void execute()
throws TaskException
{
validate();
final String message = "Building: " + m_zipFile.getAbsolutePath();
getLogger().info( message );
pack();
}

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 abstract OutputStream getPackingStream( OutputStream output )
throws TaskException, IOException;

protected final void copy( final File file, final OutputStream output )
throws IOException
{
final FileInputStream input = new FileInputStream( file );
try
{
IOUtil.copy( input, output );
}
finally
{
IOUtil.shutdownStream( input );
}
}

private void validate()
throws TaskException
{
if( null == m_zipFile )
{
final String message = "zipfile attribute is required";
throw new TaskException( message );
}

if( null == m_src )
{
final String message = "src attribute is required";
throw new TaskException( message );
}

if( m_src.isDirectory() )
{
final String message = "Src attribute must not " +
"represent a directory!";
throw new TaskException( message );
}
}

protected final File getSrc()
{
return m_src;
}

protected final File getZipFile()
{
return m_zipFile;
}
}

+ 0
- 154
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Unpack.java View File

@@ -1,154 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.tools.ant.taskdefs;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;

/**
* Abstract Base class for unpack tasks.
*
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
*/
public abstract class Unpack
extends AbstractTask
{
private File m_dest;
private File m_src;

public void setDest( final File dest )
{
m_dest = dest;
}

public void setSrc( final File src )
{
m_src = src;
}

public void execute()
throws TaskException
{
validate();

final File source = getSrc();
final File dest = getDest();

if( source.lastModified() > dest.lastModified() )
{
final String message = "Expanding " + source.getAbsolutePath() +
" to " + dest.getAbsolutePath();
getLogger().info( message );

extract();
}
}

protected abstract String getDefaultExtension();

protected abstract InputStream getUnpackingStream( InputStream input )
throws TaskException, IOException;

private void extract()
throws TaskException
{
OutputStream output = null;
InputStream input = null;
InputStream fileInput = null;
try
{
output = new FileOutputStream( getDest() );
fileInput = new FileInputStream( getSrc() );
input = getUnpackingStream( fileInput );
IOUtil.copy( input, output );
}
catch( final IOException ioe )
{
final String message = "Problem expanding " + getSrc() +
":" + ioe.getMessage();
throw new TaskException( message, ioe );
}
finally
{
IOUtil.shutdownStream( fileInput );
IOUtil.shutdownStream( output );
IOUtil.shutdownStream( input );
}
}

private File createDestFile()
{
final String extension = getDefaultExtension();
final String sourceName = m_src.getName();
final int length = sourceName.length();
final int index = length - extension.length();

if( null != extension &&
length > extension.length() &&
extension.equalsIgnoreCase( sourceName.substring( index ) ) )
{
final String child = sourceName.substring( 0, index );
return new File( m_dest, child );
}
else
{
return new File( m_dest, sourceName );
}
}

private void validate()
throws TaskException
{
if( null == m_src )
{
final String message = "No Src for " + getName() + " specified";
throw new TaskException( message );
}

if( !m_src.exists() )
{
final String message = "Src doesn't exist";
throw new TaskException( message );
}

if( m_src.isDirectory() )
{
final String message = "Cannot expand a directory";
throw new TaskException( message );
}

if( null == m_dest )
{
m_dest = new File( m_src.getParent() );
}

if( m_dest.isDirectory() )
{
m_dest = createDestFile();
}
}

protected final File getDest()
{
return m_dest;
}

protected final File getSrc()
{
return m_src;
}
}

Loading…
Cancel
Save