You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/01/01 09:49:03 UTC

cvs commit: jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security SignJar.java

donaldp     02/01/01 00:49:03

  Modified:    proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security
                        SignJar.java
  Log:
  Cleaned up task
  
  Revision  Changes    Path
  1.2       +117 -94   jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security/SignJar.java
  
  Index: SignJar.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/security/SignJar.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SignJar.java	1 Jan 2002 08:41:28 -0000	1.1
  +++ SignJar.java	1 Jan 2002 08:49:03 -0000	1.2
  @@ -13,115 +13,115 @@
   import java.util.Enumeration;
   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.Task;
   import org.apache.tools.ant.taskdefs.exec.ExecTask;
   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 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>
    */
   public class SignJar
  -    extends Task
  +    extends AbstractTask
   {
       /**
        * the filesets of the jars to sign
        */
  -    protected ArrayList filesets = new ArrayList();
  +    private ArrayList m_filesets = new ArrayList();
   
       /**
        * The alias of signer.
        */
  -    protected String alias;
  -    protected boolean internalsf;
  +    private String m_alias;
  +    private boolean m_internalsf;
   
       /**
        * The name of the jar file.
        */
  -    protected File jar;
  -    protected String keypass;
  +    private File m_jar;
  +    private String m_keypass;
   
       /**
        * The name of keystore file.
        */
  -    protected File keystore;
  +    private File m_keystore;
  +
       /**
        * Whether to assume a jar which has an appropriate .SF file in is already
        * signed.
        */
  -    protected boolean lazy;
  -    protected boolean sectionsonly;
  -    protected File sigfile;
  -    protected File signedjar;
  -
  -    protected String storepass;
  -    protected String storetype;
  -    protected boolean verbose;
  +    private boolean m_lazy;
  +
  +    private boolean m_sectionsonly;
  +    private File m_sigfile;
  +    private File m_signedjar;
  +
  +    private String m_storepass;
  +    private String m_storetype;
  +    private boolean m_verbose;
   
       public void setAlias( final String alias )
       {
  -        this.alias = alias;
  +        m_alias = alias;
       }
   
       public void setInternalsf( final boolean internalsf )
       {
  -        this.internalsf = internalsf;
  +        m_internalsf = internalsf;
       }
   
       public void setJar( final File jar )
       {
  -        this.jar = jar;
  +        m_jar = jar;
       }
   
       public void setKeypass( final String keypass )
       {
  -        this.keypass = keypass;
  +        m_keypass = keypass;
       }
   
       public void setKeystore( final File keystore )
       {
  -        this.keystore = keystore;
  +        m_keystore = keystore;
       }
   
       public void setLazy( final boolean lazy )
       {
  -        this.lazy = lazy;
  +        m_lazy = lazy;
       }
   
       public void setSectionsonly( final boolean sectionsonly )
       {
  -        this.sectionsonly = sectionsonly;
  +        m_sectionsonly = sectionsonly;
       }
   
       public void setSigfile( final File sigfile )
       {
  -        this.sigfile = sigfile;
  +        m_sigfile = sigfile;
       }
   
       public void setSignedjar( final File signedjar )
       {
  -        this.signedjar = signedjar;
  +        m_signedjar = signedjar;
       }
   
       public void setStorepass( final String storepass )
       {
  -        this.storepass = storepass;
  +        m_storepass = storepass;
       }
   
       public void setStoretype( final String storetype )
       {
  -        this.storetype = storetype;
  +        m_storetype = storetype;
       }
   
       public void setVerbose( final boolean verbose )
       {
  -        this.verbose = verbose;
  +        m_verbose = verbose;
       }
   
       /**
  @@ -131,40 +131,62 @@
        */
       public void addFileset( final FileSet set )
       {
  -        filesets.add( set );
  +        m_filesets.add( set );
       }
   
       public void execute()
           throws TaskException
       {
  -        if( null == jar && null == filesets )
  -        {
  -            throw new TaskException( "jar must be set through jar attribute or nested filesets" );
  -        }
  -        if( null != jar )
  +        validate();
  +
  +        if( null != m_jar )
           {
  -            doOneJar( jar, signedjar );
  -            return;
  +            doOneJar( m_jar, m_signedjar );
           }
           else
           {
               //Assume null != filesets
   
               // deal with the filesets
  -            for( int i = 0; i < filesets.size(); i++ )
  +            for( int i = 0; i < m_filesets.size(); i++ )
               {
  -                FileSet fs = (FileSet)filesets.get( i );
  -                DirectoryScanner ds = fs.getDirectoryScanner( getProject() );
  -                String[] jarFiles = ds.getIncludedFiles();
  +                final FileSet fileSet = (FileSet)m_filesets.get( i );
  +                final DirectoryScanner scanner = fileSet.getDirectoryScanner( null );
  +                final String[] jarFiles = scanner.getIncludedFiles();
                   for( int j = 0; j < jarFiles.length; j++ )
                   {
  -                    doOneJar( new File( fs.getDir( getProject() ), jarFiles[ j ] ), null );
  +                    final File file =
  +                        new File( fileSet.getDir( null ), jarFiles[ j ] );
  +                    doOneJar( file, null );
                   }
               }
           }
       }
   
  -    protected boolean isSigned( File file )
  +    private void validate() throws TaskException
  +    {
  +        if( null == m_jar && null == m_filesets )
  +        {
  +            final String message = "jar must be set through jar attribute or nested filesets";
  +            throw new TaskException( message );
  +        }
  +        else if( null != m_jar )
  +        {
  +            if( null == m_alias )
  +            {
  +                final String message = "alias attribute must be set";
  +                throw new TaskException( message );
  +            }
  +
  +            if( null == m_storepass )
  +            {
  +                final String message = "storepass attribute must be set";
  +                throw new TaskException( message );
  +            }
  +        }
  +    }
  +
  +    private boolean isSigned( final File file )
       {
           final String SIG_START = "META-INF/";
           final String SIG_END = ".SF";
  @@ -177,12 +199,12 @@
           try
           {
               jarFile = new ZipFile( file );
  -            if( null == alias )
  +            if( null == m_alias )
               {
  -                Enumeration entries = jarFile.entries();
  +                final Enumeration entries = jarFile.entries();
                   while( entries.hasMoreElements() )
                   {
  -                    String name = ( (ZipEntry)entries.nextElement() ).getName();
  +                    final String name = ( (ZipEntry)entries.nextElement() ).getName();
                       if( name.startsWith( SIG_START ) && name.endsWith( SIG_END ) )
                       {
                           return true;
  @@ -192,108 +214,108 @@
               }
               else
               {
  -                return jarFile.getEntry( SIG_START + alias.toUpperCase() +
  -                                         SIG_END ) != null;
  +                final String name = SIG_START + m_alias.toUpperCase() + SIG_END;
  +                final ZipEntry entry = jarFile.getEntry( name );
  +                return ( entry != null );
               }
           }
  -        catch( IOException e )
  +        catch( final IOException ioe )
           {
               return false;
           }
           finally
           {
  -            if( jarFile != null )
  +            if( null != jarFile )
               {
                   try
                   {
                       jarFile.close();
                   }
  -                catch( IOException e )
  +                catch( final IOException ioe )
                   {
                   }
               }
           }
       }
   
  -    protected boolean isUpToDate( File jarFile, File signedjarFile )
  +    private boolean isUpToDate( final File jarFile, final File signedjarFile )
       {
           if( null == jarFile )
           {
               return false;
           }
  -
  -        if( null != signedjarFile )
  +        else if( null != signedjarFile )
           {
  -
               if( !jarFile.exists() )
  +            {
                   return false;
  -            if( !signedjarFile.exists() )
  +            }
  +            else if( !signedjarFile.exists() )
  +            {
                   return false;
  -            if( jarFile.equals( signedjarFile ) )
  +            }
  +            else if( jarFile.equals( signedjarFile ) )
  +            {
                   return false;
  -            if( signedjarFile.lastModified() > jarFile.lastModified() )
  +            }
  +            else if( signedjarFile.lastModified() > jarFile.lastModified() )
  +            {
                   return true;
  -        }
  -        else
  -        {
  -            if( lazy )
  +            }
  +            else
               {
  -                return isSigned( jarFile );
  +                return false;
               }
           }
  -
  -        return false;
  -    }
  -
  -    private void doOneJar( File jarSource, File jarTarget )
  -        throws TaskException
  -    {
  -        if( null == alias )
  +        else if( m_lazy )
           {
  -            throw new TaskException( "alias attribute must be set" );
  +            return isSigned( jarFile );
           }
  -
  -        if( null == storepass )
  +        else
           {
  -            throw new TaskException( "storepass attribute must be set" );
  +            return false;
           }
  +    }
   
  +    private void doOneJar( final File jarSource, final File jarTarget )
  +        throws TaskException
  +    {
           if( isUpToDate( jarSource, jarTarget ) )
               return;
   
           final StringBuffer sb = new StringBuffer();
   
  -        final ExecTask cmd = (ExecTask)getProject().createTask( "exec" );
  +        final ExecTask cmd = null;//(ExecTask)getProject().createTask( "exec" );
           cmd.setExecutable( "jarsigner" );
   
  -        if( null != keystore )
  +        if( null != m_keystore )
           {
               cmd.createArg().setValue( "-keystore" );
  -            cmd.createArg().setValue( keystore.toString() );
  +            cmd.createArg().setValue( m_keystore.toString() );
           }
   
  -        if( null != storepass )
  +        if( null != m_storepass )
           {
               cmd.createArg().setValue( "-storepass" );
  -            cmd.createArg().setValue( storepass );
  +            cmd.createArg().setValue( m_storepass );
           }
   
  -        if( null != storetype )
  +        if( null != m_storetype )
           {
               cmd.createArg().setValue( "-storetype" );
  -            cmd.createArg().setValue( storetype );
  +            cmd.createArg().setValue( m_storetype );
           }
   
  -        if( null != keypass )
  +        if( null != m_keypass )
           {
               cmd.createArg().setValue( "-keypass" );
  -            cmd.createArg().setValue( keypass );
  +            cmd.createArg().setValue( m_keypass );
           }
   
  -        if( null != sigfile )
  +        if( null != m_sigfile )
           {
               cmd.createArg().setValue( "-sigfile" );
  -            cmd.createArg().setValue( sigfile.toString() );
  +            cmd.createArg().setValue( m_sigfile.toString() );
           }
   
           if( null != jarTarget )
  @@ -302,26 +324,27 @@
               cmd.createArg().setValue( jarTarget.toString() );
           }
   
  -        if( verbose )
  +        if( m_verbose )
           {
               cmd.createArg().setValue( "-verbose" );
           }
   
  -        if( internalsf )
  +        if( m_internalsf )
           {
               cmd.createArg().setValue( "-internalsf" );
           }
   
  -        if( sectionsonly )
  +        if( m_sectionsonly )
           {
               cmd.createArg().setValue( "-sectionsonly" );
           }
   
           cmd.createArg().setValue( jarSource.toString() );
   
  -        cmd.createArg().setValue( alias );
  +        cmd.createArg().setValue( m_alias );
   
  -        getLogger().info( "Signing Jar : " + jarSource.getAbsolutePath() );
  +        final String message = "Signing Jar : " + jarSource.getAbsolutePath();
  +        getLogger().info( message );
           cmd.execute();
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>