Browse Source

Made Expand archive-agnostic and the subclasses (Unzip/Untar) are the only ones that know about the specifics of a particular archive

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270944 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
10def2afa4
6 changed files with 126 additions and 82 deletions
  1. +9
    -32
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/archive/Expand.java
  2. +1
    -9
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/archive/Untar.java
  3. +53
    -0
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/archive/Unzip.java
  4. +9
    -32
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/archive/Expand.java
  5. +1
    -9
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/archive/Untar.java
  6. +53
    -0
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/archive/Unzip.java

+ 9
- 32
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/archive/Expand.java View File

@@ -8,15 +8,12 @@
package org.apache.tools.ant.taskdefs.archive;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.myrmidon.api.TaskContext;
@@ -35,7 +32,7 @@ import org.apache.tools.ant.types.ScannerUtil;
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/
public class Expand
public abstract class Expand
extends MatchingTask
{
private boolean m_overwrite = true;
@@ -171,46 +168,26 @@ public class Expand
getLogger().info( message );
}

expandArchive( src, dir );

if( getLogger().isDebugEnabled() )
{
final String message = "expand complete";
getLogger().debug( message );
}
}

protected void expandArchive( final File src, final File dir )
throws TaskException
{
ZipInputStream zis = null;
try
{
// code from WarExpand
zis = new ZipInputStream( new FileInputStream( src ) );
ZipEntry ze = null;

while( ( ze = zis.getNextEntry() ) != null )
{
final Date date = new Date( ze.getTime() );
extractFile( dir,
zis,
ze.getName(),
date,
ze.isDirectory() );
}
expandArchive( src, dir );
}
catch( final IOException ioe )
{
final String message = "Error while expanding " + src.getPath();
throw new TaskException( message, ioe );
}
finally

if( getLogger().isDebugEnabled() )
{
IOUtil.shutdownStream( zis );
final String message = "expand complete";
getLogger().debug( message );
}
}

protected abstract void expandArchive( final File src, final File dir )
throws IOException, TaskException;

protected void extractFile( final File dir,
final InputStream input,
final String entryName,


+ 1
- 9
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/archive/Untar.java View File

@@ -25,7 +25,7 @@ public class Untar
extends Expand
{
protected void expandArchive( final File src, final File dir )
throws TaskException
throws IOException, TaskException
{
TarInputStream input = null;
FileInputStream fileInput = null;
@@ -44,18 +44,10 @@ public class Untar
entry.isDirectory() );
}
}
catch( final IOException ioe )
{
final String message = "Error while expanding " + src.getPath();
throw new TaskException( message, ioe );
}
finally
{
IOUtil.shutdownStream( fileInput );
IOUtil.shutdownStream( input );
}

final String message = "expand complete";
getLogger().debug( message );
}
}

+ 53
- 0
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/archive/Unzip.java View File

@@ -0,0 +1,53 @@
/*
* 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.archive;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.myrmidon.api.TaskException;

/**
* Untar a file. Heavily based on the Expand task.
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/
public class Unzip
extends Expand
{
protected void expandArchive( final File src, final File dir )
throws IOException, TaskException
{
ZipInputStream zis = null;
try
{
// code from WarExpand
zis = new ZipInputStream( new FileInputStream( src ) );
ZipEntry ze = null;

while( ( ze = zis.getNextEntry() ) != null )
{
final Date date = new Date( ze.getTime() );
extractFile( dir,
zis,
ze.getName(),
date,
ze.isDirectory() );
}
}
finally
{
IOUtil.shutdownStream( zis );
}
}
}

+ 9
- 32
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/archive/Expand.java View File

@@ -8,15 +8,12 @@
package org.apache.tools.ant.taskdefs.archive;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.myrmidon.api.TaskContext;
@@ -35,7 +32,7 @@ import org.apache.tools.ant.types.ScannerUtil;
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/
public class Expand
public abstract class Expand
extends MatchingTask
{
private boolean m_overwrite = true;
@@ -171,46 +168,26 @@ public class Expand
getLogger().info( message );
}

expandArchive( src, dir );

if( getLogger().isDebugEnabled() )
{
final String message = "expand complete";
getLogger().debug( message );
}
}

protected void expandArchive( final File src, final File dir )
throws TaskException
{
ZipInputStream zis = null;
try
{
// code from WarExpand
zis = new ZipInputStream( new FileInputStream( src ) );
ZipEntry ze = null;

while( ( ze = zis.getNextEntry() ) != null )
{
final Date date = new Date( ze.getTime() );
extractFile( dir,
zis,
ze.getName(),
date,
ze.isDirectory() );
}
expandArchive( src, dir );
}
catch( final IOException ioe )
{
final String message = "Error while expanding " + src.getPath();
throw new TaskException( message, ioe );
}
finally

if( getLogger().isDebugEnabled() )
{
IOUtil.shutdownStream( zis );
final String message = "expand complete";
getLogger().debug( message );
}
}

protected abstract void expandArchive( final File src, final File dir )
throws IOException, TaskException;

protected void extractFile( final File dir,
final InputStream input,
final String entryName,


+ 1
- 9
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/archive/Untar.java View File

@@ -25,7 +25,7 @@ public class Untar
extends Expand
{
protected void expandArchive( final File src, final File dir )
throws TaskException
throws IOException, TaskException
{
TarInputStream input = null;
FileInputStream fileInput = null;
@@ -44,18 +44,10 @@ public class Untar
entry.isDirectory() );
}
}
catch( final IOException ioe )
{
final String message = "Error while expanding " + src.getPath();
throw new TaskException( message, ioe );
}
finally
{
IOUtil.shutdownStream( fileInput );
IOUtil.shutdownStream( input );
}

final String message = "expand complete";
getLogger().debug( message );
}
}

+ 53
- 0
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/archive/Unzip.java View File

@@ -0,0 +1,53 @@
/*
* 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.archive;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.myrmidon.api.TaskException;

/**
* Untar a file. Heavily based on the Expand task.
*
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
* @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
*/
public class Unzip
extends Expand
{
protected void expandArchive( final File src, final File dir )
throws IOException, TaskException
{
ZipInputStream zis = null;
try
{
// code from WarExpand
zis = new ZipInputStream( new FileInputStream( src ) );
ZipEntry ze = null;

while( ( ze = zis.getNextEntry() ) != null )
{
final Date date = new Date( ze.getTime() );
extractFile( dir,
zis,
ze.getName(),
date,
ze.isDirectory() );
}
}
finally
{
IOUtil.shutdownStream( zis );
}
}
}

Loading…
Cancel
Save