git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270708 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -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; | |||
| } | |||
| /** | |||
| @@ -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 ) | |||
| { | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| /** | |||
| @@ -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 ) | |||
| { | |||
| @@ -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; | |||
| } | |||
| } | |||