blob: 783b720152fe5f86406effba1d07a258f0e2c944 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Steve Young - initial version
*******************************************************************************/
package org.eclipse.ajdt.examples.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
/**
* Wrapper class for java.util.ZipFile, which overrides the entries() method
* to filter out unwanted files. This implementation only filters out files with
* the path "META-INF/eclipse.inf", which are added to JAR files as part of the
* conditioning steps for the Eclipse Update Manager, but not required or useful
* to subsequent users of the JAR file's contents.
*/
public class ZipFileWrapper extends ZipFile {
private String fileToRemove = "META-INF/eclipse.inf"; //$NON-NLS-1$
private ArrayList filteredZipEntries = null;
private Enumeration filteredZipEntriesEnumeration = null;
public ZipFileWrapper(String name) throws IOException {
super(name);
}
/**
* Override the entries method to filter the visible list of files in the zip.
*/
public Enumeration entries(){
// Return if already generated
if(filteredZipEntriesEnumeration != null){
return filteredZipEntriesEnumeration;
}
// Else generate the filtered Enumeration of elements
Enumeration zipEntries = super.entries();
filteredZipEntries = new ArrayList();
while (zipEntries.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry) zipEntries.nextElement();
if(! zipEntry.getName().equals(fileToRemove)){
// Add to modified list
filteredZipEntries.add(zipEntry);
}
}
filteredZipEntriesEnumeration = Collections.enumeration(filteredZipEntries);
return filteredZipEntriesEnumeration;
}
}