package jde.util; import java.util.*; import java.util.zip.*; import java.io.*; /** * A ClassPathEntry representing a ZIP or JAR file. * * Copyright (C) 2001, 2002 Eric D. Friedman (eric@hfriedman.rdsl.lmi.net) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Created: Tuesday Aug 14 19:46:52 2001 * * @author Eric D. Friedman * @version $Id: ClassPathZip.java,v 1.2 2002/11/30 04:36:06 paulk Exp $ */ class ClassPathZip extends ClassPathEntry { private File zipOrJar; /** * Creates a ClassPathZip instance representing zipOrJar * * @param zipOrJar a File value * @return a ClassPathZip value * @exception IOException if an error occurs */ ClassPathZip (File zipOrJar) { super(); this.zipOrJar = zipOrJar; } /** * Load all of the classes in the zip/jar and set the loaded flag * to true. * * @exception IOException if an error occurs */ void load() throws IOException { ZipFile zipFile = new ZipFile(zipOrJar); Enumeration enum = zipFile.entries(); while (enum.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry)enum.nextElement(); String current = zipEntry.getName(); if (current.toLowerCase().endsWith(".class")) { current = current.substring(0, current.length() - 6); current = current.replace('/', '.'); current = current.replace('\\', '.'); current = current.replace('$', '.'); super.addClass(current); } } setLoaded(true); } /** * Return the zip/jar name as our string. * * @return a String value */ public String toString() { return zipOrJar.toString(); } }// ClassPathZip /* * $Log: ClassPathZip.java,v $ * Revision 1.2 2002/11/30 04:36:06 paulk * load() method now replaces a $ with a period (.) in class names. Thanks to Petter Mahlen. * */ // End of ClassPathZip.java