Home » apache-tomcat-6.0.26-src » org.apache » tomcat » util » [javadoc | source]

    1   /*
    2    * The Apache Software License, Version 1.1
    3    *
    4    * Copyright (c) 1999 The Apache Software Foundation.  All rights 
    5    * reserved.
    6    *
    7    * Redistribution and use in source and binary forms, with or without
    8    * modification, are permitted provided that the following conditions
    9    * are met:
   10    *
   11    * 1. Redistributions of source code must retain the above copyright
   12    *    notice, this list of conditions and the following disclaimer. 
   13    *
   14    * 2. Redistributions in binary form must reproduce the above copyright
   15    *    notice, this list of conditions and the following disclaimer in
   16    *    the documentation and/or other materials provided with the
   17    *    distribution.
   18    *
   19    * 3. The end-user documentation included with the redistribution, if
   20    *    any, must include the following acknowlegement:  
   21    *       "This product includes software developed by the 
   22    *        Apache Software Foundation (http://www.apache.org/)."
   23    *    Alternately, this acknowlegement may appear in the software itself,
   24    *    if and wherever such third-party acknowlegements normally appear.
   25    *
   26    * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   27    *    Foundation" must not be used to endorse or promote products derived
   28    *    from this software without prior written permission. For written 
   29    *    permission, please contact apache@apache.org.
   30    *
   31    * 5. Products derived from this software may not be called "Apache"
   32    *    nor may "Apache" appear in their names without prior written
   33    *    permission of the Apache Group.
   34    *
   35    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   36    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   37    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   38    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   39    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   40    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   41    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   42    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   43    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   44    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   45    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   46    * SUCH DAMAGE.
   47    * ====================================================================
   48    *
   49    * This software consists of voluntary contributions made by many
   50    * individuals on behalf of the Apache Software Foundation.  For more
   51    * information on the Apache Software Foundation, please see
   52    * <http://www.apache.org/>.
   53    *
   54    * [Additional notices, if required by prior licensing conditions]
   55    *
   56    */ 
   57   
   58   
   59   package org.apache.tomcat.util;
   60   
   61   import java.util.zip.ZipInputStream;
   62   import java.util.zip.ZipEntry;
   63   import java.io.File;
   64   import java.io.FileOutputStream;
   65   import java.net.URL;
   66   import java.io.IOException;
   67   import java.net.MalformedURLException;
   68   import java.io.FileNotFoundException;
   69   
   70   /**
   71    *
   72    * @author James Todd [gonzo@eng.sun.com
   73    */
   74   
   75   public class WARUtil {
   76       /** Expand a WAR/Jar file in a directory.
   77        *  @param dir destination directory
   78        *  @param war URL for the source WAR/JAR/ZIP file. Starting
   79        *         and ending "/" will be removed
   80        *
   81        */ 
   82       public static void expand(File dir, URL war)
   83       throws MalformedURLException, IOException {
   84           String s = trim(war.getFile(), "/");
   85   	URL u = new URL(s);
   86   	ZipInputStream zis = new ZipInputStream(u.openStream());
   87   	ZipEntry ze = null;
   88   
   89   	while ((ze = zis.getNextEntry()) != null) {
   90               try {
   91   		File f = new File(dir, ze.getName());
   92   
   93   		if (ze.isDirectory()) {
   94   		    f.mkdirs(); 
   95   		} else {
   96   		    byte[] buffer = new byte[1024];
   97   		    int length = 0;
   98   		    FileOutputStream fos = new FileOutputStream(f);
   99   		    
  100   		    while ((length = zis.read(buffer)) >= 0) {
  101   			fos.write(buffer, 0, length);
  102   		    }
  103   		    
  104   		    fos.close();
  105   		}
  106   	    } catch( FileNotFoundException ex ) {
  107   		// XXX replace with a call to log() when available
  108   		System.out.println("WARUtil: FileNotFoundException: " +  ze.getName() + " / " + s );
  109   	    }
  110   	}
  111   
  112   	zis.close();
  113       }
  114   
  115       private static String trim(String s, String t) {
  116   	if (s.startsWith(t)) {
  117   	    s = s.substring(t.length());
  118   	}
  119   	
  120   	if (s.endsWith(t)) {
  121   	    s = s.substring(0, s.length() - t.length());
  122   	}
  123   
  124           return s;
  125       }
  126   }

Home » apache-tomcat-6.0.26-src » org.apache » tomcat » util » [javadoc | source]