org.codehaus.mojo.webstart.Pack200 Maven / Gradle / Ivy
package org.codehaus.mojo.webstart;
/*
 * Copyright 2001-2005 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License" );
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import com.sun.tools.apache.ant.pack200.Pack200Task;
import com.sun.tools.apache.ant.pack200.Unpack200Task;
import org.apache.tools.ant.Project;
import java.io.File;
import java.io.FileFilter;
/**
 * Handles pack200 operations.
 *
 * @author Jerome Lacoste
 */
public class Pack200
{
    public static void packJars( File directory, FileFilter jarFileFilter, boolean gzip )
    {
        // getLog().debug( "packJars for " + directory );
        Pack200Task packTask;
        File[] jarFiles = directory.listFiles( jarFileFilter );
        for ( int i = 0; i < jarFiles.length; i++ )
        {
            // getLog().debug( "packJars: " + jarFiles[i] );
            final String extension = gzip ? ".pack.gz" : ".pack";
            File pack200Jar = new File( jarFiles[i].getParentFile(), jarFiles[i].getName() + extension );
            if ( pack200Jar.exists() )
            {
                pack200Jar.delete();
            }
            packTask = new Pack200Task();
            packTask.setProject( new Project() );
            packTask.setDestfile( pack200Jar );
            packTask.setSrc( jarFiles[i] );
            packTask.setGZIPOutput( gzip );
            packTask.execute();
            pack200Jar.setLastModified( jarFiles[i].lastModified() );
        }
    }
    public static void unpackJars( File directory, FileFilter pack200FileFilter )
    {
        // getLog().debug( "unpackJars for " + directory );
        Unpack200Task unpackTask;
        File[] packFiles = directory.listFiles( pack200FileFilter );
        for ( int i = 0; i < packFiles.length; i++ )
        {
            final String packedJarPath = packFiles[i].getAbsolutePath();
            int extensionLength = packedJarPath.endsWith( ".jar.pack.gz" ) ? 8 : 5;
            String jarFileName = packedJarPath.substring( 0, packedJarPath.length() - extensionLength );
            File jarFile = new File( jarFileName );
            if ( jarFile.exists() )
            {
                jarFile.delete();
            }
            unpackTask = new Unpack200Task();
            unpackTask.setProject( new Project() );
            unpackTask.setDest( jarFile );
            unpackTask.setSrc( packFiles[i] );
            unpackTask.execute();
            jarFile.setLastModified( packFiles[i].lastModified() );
        }
    }
}
    © 2015 - 2025 Weber Informatics LLC | Privacy Policy