Browse Source

Don't use ExecTask directly, instead use the ant adaptor objects and Execute2

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270708 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
30655bbece
6 changed files with 316 additions and 334 deletions
  1. +65
    -108
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
  2. +51
    -33
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security/GenerateKey.java
  3. +42
    -26
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security/SignJar.java
  4. +65
    -108
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Cab.java
  5. +51
    -33
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/security/GenerateKey.java
  6. +42
    -26
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/security/SignJar.java

+ 65
- 108
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java View File

@@ -14,41 +14,36 @@ import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.myrmidon.api.TaskException;
import org.apache.aut.nativelib.Os;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.taskdefs.exec.ExecTask;
import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.FileSet;

/**
* Create a CAB archive.
*
* @author Roger Vaughn <a href="mailto:rvaughn@seaconinc.com">
* rvaughn@seaconinc.com</a>
* @author <a href="mailto:rvaughn@seaconinc.com">Roger Vaughn</a>
*/
public class Cab extends MatchingTask
public class Cab
extends MatchingTask
{
private ArrayList filesets = new ArrayList();
private boolean doCompress = true;
private boolean doVerbose = false;

protected String archiveType = "cab";

private File baseDir;

private File cabFile;
private String cmdOptions;
private ArrayList m_filesets = new ArrayList();
private boolean m_compress = true;
private File m_baseDir;
private File m_cabFile;
private String m_options;

/**
* This is the base directory to look in for things to cab.
*
* @param baseDir The new Basedir value
*/
public void setBasedir( File baseDir )
public void setBasedir( final File baseDir )
{
this.baseDir = baseDir;
m_baseDir = baseDir;
}

/**
@@ -56,9 +51,9 @@ public class Cab extends MatchingTask
*
* @param cabFile The new Cabfile value
*/
public void setCabfile( File cabFile )
public void setCabfile( final File cabFile )
{
this.cabFile = cabFile;
m_cabFile = cabFile;
}

/**
@@ -66,9 +61,9 @@ public class Cab extends MatchingTask
*
* @param compress The new Compress value
*/
public void setCompress( boolean compress )
public void setCompress( final boolean compress )
{
doCompress = compress;
m_compress = compress;
}

/**
@@ -76,19 +71,9 @@ public class Cab extends MatchingTask
*
* @param options The new Options value
*/
public void setOptions( String options )
{
cmdOptions = options;
}

/**
* Sets whether we want to see or suppress cabarc output.
*
* @param verbose The new Verbose value
*/
public void setVerbose( boolean verbose )
public void setOptions( final String options )
{
doVerbose = verbose;
m_options = options;
}

/**
@@ -96,38 +81,38 @@ public class Cab extends MatchingTask
*
* @param set The feature to be added to the Fileset attribute
*/
public void addFileset( FileSet set )
public void addFileset( final FileSet set )
{
filesets.add( set );
m_filesets.add( set );
}

public void execute()
throws TaskException
{

checkConfiguration();

ArrayList files = getFileList();
final ArrayList files = getFileList();

// quick exit if the target is up to date
if( isUpToDate( files ) )
{
return;
}

getLogger().info( "Building " + archiveType + ": " + cabFile.getAbsolutePath() );
getLogger().info( "Building cab: " + m_cabFile.getAbsolutePath() );

if( !Os.isFamily( "windows" ) )
{
getLogger().debug( "Using listcab/libcabinet" );

StringBuffer sb = new StringBuffer();

Iterator fileEnum = files.iterator();
final StringBuffer sb = new StringBuffer();

while( fileEnum.hasNext() )
final Iterator e = files.iterator();
while( e.hasNext() )
{
sb.append( fileEnum.next() ).append( "\n" );
sb.append( e.next() ).append( "\n" );
}
sb.append( "\n" ).append( cabFile.getAbsolutePath() ).append( "\n" );
sb.append( "\n" ).append( m_cabFile.getAbsolutePath() ).append( "\n" );

try
{
@@ -139,7 +124,7 @@ public class Cab extends MatchingTask
}
catch( IOException ex )
{
String msg = "Problem creating " + cabFile + " " + ex.getMessage();
String msg = "Problem creating " + m_cabFile + " " + ex.getMessage();
throw new TaskException( msg );
}
}
@@ -148,32 +133,20 @@ public class Cab extends MatchingTask
try
{
File listFile = createListFile( files );
ExecTask exec = createExec();
File outFile = null;

// die if cabarc fails
exec.setDir( baseDir );

if( !doVerbose )
{
outFile = File.createTempFile( "ant", "", getBaseDirectory() );
exec.setOutput( outFile );
}

setupCommand( listFile, exec );
exec.execute();

if( outFile != null )
{
outFile.delete();
}
Execute2 exe = new Execute2();
setupLogger( exe );
exe.setWorkingDirectory( m_baseDir );
final Commandline cmd = createCommand( listFile );
exe.setCommandline( cmd.getCommandline() );
exe.execute();

listFile.delete();
}
catch( IOException ioe )
catch( final IOException ioe )
{
String msg = "Problem creating " + cabFile + " " + ioe.getMessage();
throw new TaskException( msg );
final String message =
"Problem creating " + m_cabFile + " " + ioe.getMessage();
throw new TaskException( message );
}
}
}
@@ -182,26 +155,23 @@ public class Cab extends MatchingTask
* Get the complete list of files to be included in the cab. Filenames are
* gathered from filesets if any have been added, otherwise from the
* traditional include parameters.
*
* @return The FileList value
* @exception TaskException Description of Exception
*/
protected ArrayList getFileList()
throws TaskException
{
ArrayList files = new ArrayList();

if( filesets.size() == 0 )
if( m_filesets.size() == 0 )
{
// get files from old methods - includes and nested include
appendFiles( files, super.getDirectoryScanner( baseDir ) );
appendFiles( files, super.getDirectoryScanner( m_baseDir ) );
}
else
{
// get files from filesets
for( int i = 0; i < filesets.size(); i++ )
for( int i = 0; i < m_filesets.size(); i++ )
{
FileSet fs = (FileSet)filesets.get( i );
FileSet fs = (FileSet)m_filesets.get( i );
if( fs != null )
{
appendFiles( files, fs.getDirectoryScanner() );
@@ -224,8 +194,8 @@ public class Cab extends MatchingTask
for( int i = 0; i < files.size() && upToDate; i++ )
{
String file = files.get( i ).toString();
if( new File( baseDir, file ).lastModified() >
cabFile.lastModified() )
if( new File( m_baseDir, file ).lastModified() >
m_cabFile.lastModified() )
upToDate = false;
}
return upToDate;
@@ -255,15 +225,15 @@ public class Cab extends MatchingTask
protected void checkConfiguration()
throws TaskException
{
if( baseDir == null )
if( m_baseDir == null )
{
throw new TaskException( "basedir attribute must be set!" );
}
if( !baseDir.exists() )
if( !m_baseDir.exists() )
{
throw new TaskException( "basedir does not exist!" );
}
if( cabFile == null )
if( m_cabFile == null )
{
throw new TaskException( "cabfile attribute must be set!" );
}
@@ -271,44 +241,31 @@ public class Cab extends MatchingTask

/**
* Create the cabarc command line to use.
*
* @param listFile Description of Parameter
* @return Description of the Returned Value
*/
protected void setupCommand( File listFile, ExecTask exec )
protected Commandline createCommand( final File listFile )
throws TaskException
{
exec.setExecutable( "cabarc" );
exec.createArg().setValue( "-r" );
exec.createArg().setValue( "-p" );
final Commandline cmd = new Commandline();
cmd.setExecutable( "cabarc" );
cmd.createArgument().setValue( "-r" );
cmd.createArgument().setValue( "-p" );

if( !doCompress )
if( !m_compress )
{
exec.createArg().setValue( "-m" );
exec.createArg().setValue( "none" );
cmd.createArgument().setValue( "-m" );
cmd.createArgument().setValue( "none" );
}

if( cmdOptions != null )
if( m_options != null )
{
exec.createArg().setLine( cmdOptions );
cmd.createArgument().setLine( m_options );
}

exec.createArg().setValue( "n" );
exec.createArg().setFile( cabFile );
exec.createArg().setValue( "@" + listFile.getAbsolutePath() );
}
cmd.createArgument().setValue( "n" );
cmd.createArgument().setFile( m_cabFile );
cmd.createArgument().setValue( "@" + listFile.getAbsolutePath() );

/**
* Create a new exec delegate. The delegate task is populated so that it
* appears in the logs to be the same task as this one.
*
* @return Description of the Returned Value
* @exception TaskException Description of Exception
*/
protected ExecTask createExec()
throws TaskException
{
return (ExecTask)getProject().createTask( "exec" );
return cmd;
}

/**


+ 51
- 33
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security/GenerateKey.java View File

@@ -7,17 +7,19 @@
*/
package org.apache.tools.ant.taskdefs.security;

import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.exec.ExecTask;
import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
import java.io.IOException;

/**
* Generates a key.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class GenerateKey
extends Task
extends AbstractTask
{
/**
* The alias of signer.
@@ -141,87 +143,103 @@ public class GenerateKey
final String message = "Generating Key for " + m_alias;
getLogger().info( message );

final ExecTask cmd = (ExecTask)getProject().createTask( "exec" );
final Commandline cmd = createCommand();
final Execute2 exe = new Execute2();
exe.setWorkingDirectory( getBaseDirectory() );
exe.setCommandline( cmd.getCommandline() );
try
{
exe.execute();
}
catch( final IOException ioe )
{
throw new TaskException( ioe.getMessage(), ioe );
}
}

private Commandline createCommand()
{
final Commandline cmd = new Commandline();
cmd.setExecutable( "keytool" );

cmd.createArg().setValue( "-genkey " );
cmd.createArgument().setValue( "-genkey " );

if( m_verbose )
{
cmd.createArg().setValue( "-v " );
cmd.createArgument().setValue( "-v " );
}

cmd.createArg().setValue( "-alias" );
cmd.createArg().setValue( m_alias );
cmd.createArgument().setValue( "-alias" );
cmd.createArgument().setValue( m_alias );

if( null != m_dname )
{
cmd.createArg().setValue( "-dname" );
cmd.createArg().setValue( m_dname );
cmd.createArgument().setValue( "-dname" );
cmd.createArgument().setValue( m_dname );
}

if( null != m_expandedDname )
{
cmd.createArg().setValue( "-dname" );
cmd.createArg().setValue( m_expandedDname.toString() );
cmd.createArgument().setValue( "-dname" );
cmd.createArgument().setValue( m_expandedDname.toString() );
}

if( null != m_keystore )
{
cmd.createArg().setValue( "-keystore" );
cmd.createArg().setValue( m_keystore );
cmd.createArgument().setValue( "-keystore" );
cmd.createArgument().setValue( m_keystore );
}

if( null != m_storepass )
{
cmd.createArg().setValue( "-storepass" );
cmd.createArg().setValue( m_storepass );
cmd.createArgument().setValue( "-storepass" );
cmd.createArgument().setValue( m_storepass );
}

if( null != m_storetype )
{
cmd.createArg().setValue( "-storetype" );
cmd.createArg().setValue( m_storetype );
cmd.createArgument().setValue( "-storetype" );
cmd.createArgument().setValue( m_storetype );
}

cmd.createArg().setValue( "-keypass" );
cmd.createArgument().setValue( "-keypass" );
if( null != m_keypass )
{
cmd.createArg().setValue( m_keypass );
cmd.createArgument().setValue( m_keypass );
}
else
{
cmd.createArg().setValue( m_storepass );
cmd.createArgument().setValue( m_storepass );
}

if( null != m_sigalg )
{
cmd.createArg().setValue( "-sigalg" );
cmd.createArg().setValue( m_sigalg );
cmd.createArgument().setValue( "-sigalg" );
cmd.createArgument().setValue( m_sigalg );
}

if( null != m_keyalg )
{
cmd.createArg().setValue( "-keyalg" );
cmd.createArg().setValue( m_keyalg );
cmd.createArgument().setValue( "-keyalg" );
cmd.createArgument().setValue( m_keyalg );
}

if( 0 < m_keysize )
{
cmd.createArg().setValue( "-keysize" );
cmd.createArg().setValue( "" + m_keysize );
cmd.createArgument().setValue( "-keysize" );
cmd.createArgument().setValue( "" + m_keysize );
}

if( 0 < m_validity )
{
cmd.createArg().setValue( "-validity" );
cmd.createArg().setValue( "" + m_validity );
cmd.createArgument().setValue( "-validity" );
cmd.createArgument().setValue( "" + m_validity );
}

cmd.execute();
return cmd;
}

private void validate() throws TaskException
private void validate()
throws TaskException
{
if( null == m_alias )
{


+ 42
- 26
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security/SignJar.java View File

@@ -15,15 +15,16 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.taskdefs.exec.ExecTask;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.FileSet;

/**
* Sign a archive.
*
* @author Peter Donald <a href="mailto:donaldp@apache.org">donaldp@apache.org</a>
* @author Nick Fortescue <a href="mailto:nick@ox.compsoc.net">nick@ox.compsoc.net</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @author <a href="mailto:nick@ox.compsoc.net">Nick Fortescue</a>
*/
public class SignJar
extends AbstractTask
@@ -285,67 +286,82 @@ public class SignJar

final StringBuffer sb = new StringBuffer();

final ExecTask cmd = null;//(ExecTask)getProject().createTask( "exec" );
final String message = "Signing Jar : " + jarSource.getAbsolutePath();
getLogger().info( message );

final Commandline cmd = buildCommand( jarTarget, jarSource );
final Execute2 exe = new Execute2();
setupLogger( exe );
try
{
exe.execute();
}
catch( final IOException ioe )
{
throw new TaskException( ioe.getMessage(), ioe );
}
}

private Commandline buildCommand( final File jarTarget, final File jarSource )
{
final Commandline cmd = new Commandline();
cmd.setExecutable( "jarsigner" );

if( null != m_keystore )
{
cmd.createArg().setValue( "-keystore" );
cmd.createArg().setValue( m_keystore.toString() );
cmd.createArgument().setValue( "-keystore" );
cmd.createArgument().setValue( m_keystore.toString() );
}

if( null != m_storepass )
{
cmd.createArg().setValue( "-storepass" );
cmd.createArg().setValue( m_storepass );
cmd.createArgument().setValue( "-storepass" );
cmd.createArgument().setValue( m_storepass );
}

if( null != m_storetype )
{
cmd.createArg().setValue( "-storetype" );
cmd.createArg().setValue( m_storetype );
cmd.createArgument().setValue( "-storetype" );
cmd.createArgument().setValue( m_storetype );
}

if( null != m_keypass )
{
cmd.createArg().setValue( "-keypass" );
cmd.createArg().setValue( m_keypass );
cmd.createArgument().setValue( "-keypass" );
cmd.createArgument().setValue( m_keypass );
}

if( null != m_sigfile )
{
cmd.createArg().setValue( "-sigfile" );
cmd.createArg().setValue( m_sigfile.toString() );
cmd.createArgument().setValue( "-sigfile" );
cmd.createArgument().setValue( m_sigfile.toString() );
}

if( null != jarTarget )
{
cmd.createArg().setValue( "-signedjar" );
cmd.createArg().setValue( jarTarget.toString() );
cmd.createArgument().setValue( "-signedjar" );
cmd.createArgument().setValue( jarTarget.toString() );
}

if( m_verbose )
{
cmd.createArg().setValue( "-verbose" );
cmd.createArgument().setValue( "-verbose" );
}

if( m_internalsf )
{
cmd.createArg().setValue( "-internalsf" );
cmd.createArgument().setValue( "-internalsf" );
}

if( m_sectionsonly )
{
cmd.createArg().setValue( "-sectionsonly" );
cmd.createArgument().setValue( "-sectionsonly" );
}

cmd.createArg().setValue( jarSource.toString() );
cmd.createArgument().setValue( jarSource.toString() );

cmd.createArg().setValue( m_alias );

final String message = "Signing Jar : " + jarSource.getAbsolutePath();
getLogger().info( message );
cmd.execute();
cmd.createArgument().setValue( m_alias );
return cmd;
}
}


+ 65
- 108
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Cab.java View File

@@ -14,41 +14,36 @@ import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.myrmidon.api.TaskException;
import org.apache.aut.nativelib.Os;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.taskdefs.exec.ExecTask;
import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.FileSet;

/**
* Create a CAB archive.
*
* @author Roger Vaughn <a href="mailto:rvaughn@seaconinc.com">
* rvaughn@seaconinc.com</a>
* @author <a href="mailto:rvaughn@seaconinc.com">Roger Vaughn</a>
*/
public class Cab extends MatchingTask
public class Cab
extends MatchingTask
{
private ArrayList filesets = new ArrayList();
private boolean doCompress = true;
private boolean doVerbose = false;

protected String archiveType = "cab";

private File baseDir;

private File cabFile;
private String cmdOptions;
private ArrayList m_filesets = new ArrayList();
private boolean m_compress = true;
private File m_baseDir;
private File m_cabFile;
private String m_options;

/**
* This is the base directory to look in for things to cab.
*
* @param baseDir The new Basedir value
*/
public void setBasedir( File baseDir )
public void setBasedir( final File baseDir )
{
this.baseDir = baseDir;
m_baseDir = baseDir;
}

/**
@@ -56,9 +51,9 @@ public class Cab extends MatchingTask
*
* @param cabFile The new Cabfile value
*/
public void setCabfile( File cabFile )
public void setCabfile( final File cabFile )
{
this.cabFile = cabFile;
m_cabFile = cabFile;
}

/**
@@ -66,9 +61,9 @@ public class Cab extends MatchingTask
*
* @param compress The new Compress value
*/
public void setCompress( boolean compress )
public void setCompress( final boolean compress )
{
doCompress = compress;
m_compress = compress;
}

/**
@@ -76,19 +71,9 @@ public class Cab extends MatchingTask
*
* @param options The new Options value
*/
public void setOptions( String options )
{
cmdOptions = options;
}

/**
* Sets whether we want to see or suppress cabarc output.
*
* @param verbose The new Verbose value
*/
public void setVerbose( boolean verbose )
public void setOptions( final String options )
{
doVerbose = verbose;
m_options = options;
}

/**
@@ -96,38 +81,38 @@ public class Cab extends MatchingTask
*
* @param set The feature to be added to the Fileset attribute
*/
public void addFileset( FileSet set )
public void addFileset( final FileSet set )
{
filesets.add( set );
m_filesets.add( set );
}

public void execute()
throws TaskException
{

checkConfiguration();

ArrayList files = getFileList();
final ArrayList files = getFileList();

// quick exit if the target is up to date
if( isUpToDate( files ) )
{
return;
}

getLogger().info( "Building " + archiveType + ": " + cabFile.getAbsolutePath() );
getLogger().info( "Building cab: " + m_cabFile.getAbsolutePath() );

if( !Os.isFamily( "windows" ) )
{
getLogger().debug( "Using listcab/libcabinet" );

StringBuffer sb = new StringBuffer();

Iterator fileEnum = files.iterator();
final StringBuffer sb = new StringBuffer();

while( fileEnum.hasNext() )
final Iterator e = files.iterator();
while( e.hasNext() )
{
sb.append( fileEnum.next() ).append( "\n" );
sb.append( e.next() ).append( "\n" );
}
sb.append( "\n" ).append( cabFile.getAbsolutePath() ).append( "\n" );
sb.append( "\n" ).append( m_cabFile.getAbsolutePath() ).append( "\n" );

try
{
@@ -139,7 +124,7 @@ public class Cab extends MatchingTask
}
catch( IOException ex )
{
String msg = "Problem creating " + cabFile + " " + ex.getMessage();
String msg = "Problem creating " + m_cabFile + " " + ex.getMessage();
throw new TaskException( msg );
}
}
@@ -148,32 +133,20 @@ public class Cab extends MatchingTask
try
{
File listFile = createListFile( files );
ExecTask exec = createExec();
File outFile = null;

// die if cabarc fails
exec.setDir( baseDir );

if( !doVerbose )
{
outFile = File.createTempFile( "ant", "", getBaseDirectory() );
exec.setOutput( outFile );
}

setupCommand( listFile, exec );
exec.execute();

if( outFile != null )
{
outFile.delete();
}
Execute2 exe = new Execute2();
setupLogger( exe );
exe.setWorkingDirectory( m_baseDir );
final Commandline cmd = createCommand( listFile );
exe.setCommandline( cmd.getCommandline() );
exe.execute();

listFile.delete();
}
catch( IOException ioe )
catch( final IOException ioe )
{
String msg = "Problem creating " + cabFile + " " + ioe.getMessage();
throw new TaskException( msg );
final String message =
"Problem creating " + m_cabFile + " " + ioe.getMessage();
throw new TaskException( message );
}
}
}
@@ -182,26 +155,23 @@ public class Cab extends MatchingTask
* Get the complete list of files to be included in the cab. Filenames are
* gathered from filesets if any have been added, otherwise from the
* traditional include parameters.
*
* @return The FileList value
* @exception TaskException Description of Exception
*/
protected ArrayList getFileList()
throws TaskException
{
ArrayList files = new ArrayList();

if( filesets.size() == 0 )
if( m_filesets.size() == 0 )
{
// get files from old methods - includes and nested include
appendFiles( files, super.getDirectoryScanner( baseDir ) );
appendFiles( files, super.getDirectoryScanner( m_baseDir ) );
}
else
{
// get files from filesets
for( int i = 0; i < filesets.size(); i++ )
for( int i = 0; i < m_filesets.size(); i++ )
{
FileSet fs = (FileSet)filesets.get( i );
FileSet fs = (FileSet)m_filesets.get( i );
if( fs != null )
{
appendFiles( files, fs.getDirectoryScanner() );
@@ -224,8 +194,8 @@ public class Cab extends MatchingTask
for( int i = 0; i < files.size() && upToDate; i++ )
{
String file = files.get( i ).toString();
if( new File( baseDir, file ).lastModified() >
cabFile.lastModified() )
if( new File( m_baseDir, file ).lastModified() >
m_cabFile.lastModified() )
upToDate = false;
}
return upToDate;
@@ -255,15 +225,15 @@ public class Cab extends MatchingTask
protected void checkConfiguration()
throws TaskException
{
if( baseDir == null )
if( m_baseDir == null )
{
throw new TaskException( "basedir attribute must be set!" );
}
if( !baseDir.exists() )
if( !m_baseDir.exists() )
{
throw new TaskException( "basedir does not exist!" );
}
if( cabFile == null )
if( m_cabFile == null )
{
throw new TaskException( "cabfile attribute must be set!" );
}
@@ -271,44 +241,31 @@ public class Cab extends MatchingTask

/**
* Create the cabarc command line to use.
*
* @param listFile Description of Parameter
* @return Description of the Returned Value
*/
protected void setupCommand( File listFile, ExecTask exec )
protected Commandline createCommand( final File listFile )
throws TaskException
{
exec.setExecutable( "cabarc" );
exec.createArg().setValue( "-r" );
exec.createArg().setValue( "-p" );
final Commandline cmd = new Commandline();
cmd.setExecutable( "cabarc" );
cmd.createArgument().setValue( "-r" );
cmd.createArgument().setValue( "-p" );

if( !doCompress )
if( !m_compress )
{
exec.createArg().setValue( "-m" );
exec.createArg().setValue( "none" );
cmd.createArgument().setValue( "-m" );
cmd.createArgument().setValue( "none" );
}

if( cmdOptions != null )
if( m_options != null )
{
exec.createArg().setLine( cmdOptions );
cmd.createArgument().setLine( m_options );
}

exec.createArg().setValue( "n" );
exec.createArg().setFile( cabFile );
exec.createArg().setValue( "@" + listFile.getAbsolutePath() );
}
cmd.createArgument().setValue( "n" );
cmd.createArgument().setFile( m_cabFile );
cmd.createArgument().setValue( "@" + listFile.getAbsolutePath() );

/**
* Create a new exec delegate. The delegate task is populated so that it
* appears in the logs to be the same task as this one.
*
* @return Description of the Returned Value
* @exception TaskException Description of Exception
*/
protected ExecTask createExec()
throws TaskException
{
return (ExecTask)getProject().createTask( "exec" );
return cmd;
}

/**


+ 51
- 33
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/security/GenerateKey.java View File

@@ -7,17 +7,19 @@
*/
package org.apache.tools.ant.taskdefs.security;

import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.exec.ExecTask;
import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
import java.io.IOException;

/**
* Generates a key.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class GenerateKey
extends Task
extends AbstractTask
{
/**
* The alias of signer.
@@ -141,87 +143,103 @@ public class GenerateKey
final String message = "Generating Key for " + m_alias;
getLogger().info( message );

final ExecTask cmd = (ExecTask)getProject().createTask( "exec" );
final Commandline cmd = createCommand();
final Execute2 exe = new Execute2();
exe.setWorkingDirectory( getBaseDirectory() );
exe.setCommandline( cmd.getCommandline() );
try
{
exe.execute();
}
catch( final IOException ioe )
{
throw new TaskException( ioe.getMessage(), ioe );
}
}

private Commandline createCommand()
{
final Commandline cmd = new Commandline();
cmd.setExecutable( "keytool" );

cmd.createArg().setValue( "-genkey " );
cmd.createArgument().setValue( "-genkey " );

if( m_verbose )
{
cmd.createArg().setValue( "-v " );
cmd.createArgument().setValue( "-v " );
}

cmd.createArg().setValue( "-alias" );
cmd.createArg().setValue( m_alias );
cmd.createArgument().setValue( "-alias" );
cmd.createArgument().setValue( m_alias );

if( null != m_dname )
{
cmd.createArg().setValue( "-dname" );
cmd.createArg().setValue( m_dname );
cmd.createArgument().setValue( "-dname" );
cmd.createArgument().setValue( m_dname );
}

if( null != m_expandedDname )
{
cmd.createArg().setValue( "-dname" );
cmd.createArg().setValue( m_expandedDname.toString() );
cmd.createArgument().setValue( "-dname" );
cmd.createArgument().setValue( m_expandedDname.toString() );
}

if( null != m_keystore )
{
cmd.createArg().setValue( "-keystore" );
cmd.createArg().setValue( m_keystore );
cmd.createArgument().setValue( "-keystore" );
cmd.createArgument().setValue( m_keystore );
}

if( null != m_storepass )
{
cmd.createArg().setValue( "-storepass" );
cmd.createArg().setValue( m_storepass );
cmd.createArgument().setValue( "-storepass" );
cmd.createArgument().setValue( m_storepass );
}

if( null != m_storetype )
{
cmd.createArg().setValue( "-storetype" );
cmd.createArg().setValue( m_storetype );
cmd.createArgument().setValue( "-storetype" );
cmd.createArgument().setValue( m_storetype );
}

cmd.createArg().setValue( "-keypass" );
cmd.createArgument().setValue( "-keypass" );
if( null != m_keypass )
{
cmd.createArg().setValue( m_keypass );
cmd.createArgument().setValue( m_keypass );
}
else
{
cmd.createArg().setValue( m_storepass );
cmd.createArgument().setValue( m_storepass );
}

if( null != m_sigalg )
{
cmd.createArg().setValue( "-sigalg" );
cmd.createArg().setValue( m_sigalg );
cmd.createArgument().setValue( "-sigalg" );
cmd.createArgument().setValue( m_sigalg );
}

if( null != m_keyalg )
{
cmd.createArg().setValue( "-keyalg" );
cmd.createArg().setValue( m_keyalg );
cmd.createArgument().setValue( "-keyalg" );
cmd.createArgument().setValue( m_keyalg );
}

if( 0 < m_keysize )
{
cmd.createArg().setValue( "-keysize" );
cmd.createArg().setValue( "" + m_keysize );
cmd.createArgument().setValue( "-keysize" );
cmd.createArgument().setValue( "" + m_keysize );
}

if( 0 < m_validity )
{
cmd.createArg().setValue( "-validity" );
cmd.createArg().setValue( "" + m_validity );
cmd.createArgument().setValue( "-validity" );
cmd.createArgument().setValue( "" + m_validity );
}

cmd.execute();
return cmd;
}

private void validate() throws TaskException
private void validate()
throws TaskException
{
if( null == m_alias )
{


+ 42
- 26
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/security/SignJar.java View File

@@ -15,15 +15,16 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.taskdefs.exec.ExecTask;
import org.apache.tools.ant.types.DirectoryScanner;
import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.FileSet;

/**
* Sign a archive.
*
* @author Peter Donald <a href="mailto:donaldp@apache.org">donaldp@apache.org</a>
* @author Nick Fortescue <a href="mailto:nick@ox.compsoc.net">nick@ox.compsoc.net</a>
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @author <a href="mailto:nick@ox.compsoc.net">Nick Fortescue</a>
*/
public class SignJar
extends AbstractTask
@@ -285,67 +286,82 @@ public class SignJar

final StringBuffer sb = new StringBuffer();

final ExecTask cmd = null;//(ExecTask)getProject().createTask( "exec" );
final String message = "Signing Jar : " + jarSource.getAbsolutePath();
getLogger().info( message );

final Commandline cmd = buildCommand( jarTarget, jarSource );
final Execute2 exe = new Execute2();
setupLogger( exe );
try
{
exe.execute();
}
catch( final IOException ioe )
{
throw new TaskException( ioe.getMessage(), ioe );
}
}

private Commandline buildCommand( final File jarTarget, final File jarSource )
{
final Commandline cmd = new Commandline();
cmd.setExecutable( "jarsigner" );

if( null != m_keystore )
{
cmd.createArg().setValue( "-keystore" );
cmd.createArg().setValue( m_keystore.toString() );
cmd.createArgument().setValue( "-keystore" );
cmd.createArgument().setValue( m_keystore.toString() );
}

if( null != m_storepass )
{
cmd.createArg().setValue( "-storepass" );
cmd.createArg().setValue( m_storepass );
cmd.createArgument().setValue( "-storepass" );
cmd.createArgument().setValue( m_storepass );
}

if( null != m_storetype )
{
cmd.createArg().setValue( "-storetype" );
cmd.createArg().setValue( m_storetype );
cmd.createArgument().setValue( "-storetype" );
cmd.createArgument().setValue( m_storetype );
}

if( null != m_keypass )
{
cmd.createArg().setValue( "-keypass" );
cmd.createArg().setValue( m_keypass );
cmd.createArgument().setValue( "-keypass" );
cmd.createArgument().setValue( m_keypass );
}

if( null != m_sigfile )
{
cmd.createArg().setValue( "-sigfile" );
cmd.createArg().setValue( m_sigfile.toString() );
cmd.createArgument().setValue( "-sigfile" );
cmd.createArgument().setValue( m_sigfile.toString() );
}

if( null != jarTarget )
{
cmd.createArg().setValue( "-signedjar" );
cmd.createArg().setValue( jarTarget.toString() );
cmd.createArgument().setValue( "-signedjar" );
cmd.createArgument().setValue( jarTarget.toString() );
}

if( m_verbose )
{
cmd.createArg().setValue( "-verbose" );
cmd.createArgument().setValue( "-verbose" );
}

if( m_internalsf )
{
cmd.createArg().setValue( "-internalsf" );
cmd.createArgument().setValue( "-internalsf" );
}

if( m_sectionsonly )
{
cmd.createArg().setValue( "-sectionsonly" );
cmd.createArgument().setValue( "-sectionsonly" );
}

cmd.createArg().setValue( jarSource.toString() );
cmd.createArgument().setValue( jarSource.toString() );

cmd.createArg().setValue( m_alias );

final String message = "Signing Jar : " + jarSource.getAbsolutePath();
getLogger().info( message );
cmd.execute();
cmd.createArgument().setValue( m_alias );
return cmd;
}
}


Loading…
Cancel
Save