package tk.eclipse.plugin.htmleditor.gefutils; import java.io.File; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IProject; import tk.eclipse.plugin.htmleditor.HTMLPlugin; import tk.eclipse.plugin.jspeditor.editors.TLDInfo; /** * An acceptor for each entries of <tt>WEB-INF/lib/*.jar</tt>. * * @since 2.0.5 * @author Naoki Takezoe * @see IJarVisitor */ public class JarAcceptor { public static Object accept(IProject project, IJarVisitor visitor){ try { IContainer container = TLDInfo.getBaseDir(project); File basedir = container.getLocation().makeAbsolute().toFile(); return accept(basedir, visitor); } catch(Exception ex){ HTMLPlugin.logException(ex); } return null; } public static Object accept(File basedir, IJarVisitor visitor){ try { File lib = new File(basedir,"/WEB-INF/lib"); if(lib.exists() && lib.isDirectory()){ File[] files = lib.listFiles(); try { for(int i=0;i<files.length;i++){ if(files[i].getName().endsWith(".jar")){ JarFile jarFile = new JarFile(files[i]); Enumeration e = jarFile.entries(); while(e.hasMoreElements()){ JarEntry entry = (JarEntry)e.nextElement(); Object result = visitor.visit(jarFile, entry); if(result != null){ return result; } } } } } catch(Exception ex){ HTMLPlugin.logException(ex); } } } catch(Exception ex){ HTMLPlugin.logException(ex); } return null; } }