List of usage examples for java.util.jar JarFile size
public int size()
From source file:hermes.impl.LoaderSupport.java
/** * Return ClassLoader given the list of ClasspathConfig instances. The * resulting loader can then be used to instantiate providers from those * libraries./* w w w .j a v a 2 s . co m*/ */ static List lookForFactories(final List loaderConfigs, final ClassLoader baseLoader) throws IOException { final List rval = new ArrayList(); for (Iterator iter = loaderConfigs.iterator(); iter.hasNext();) { final ClasspathConfig lConfig = (ClasspathConfig) iter.next(); if (lConfig.getFactories() != null) { log.debug("using cached " + lConfig.getFactories()); for (StringTokenizer tokens = new StringTokenizer(lConfig.getFactories(), ","); tokens .hasMoreTokens();) { rval.add(tokens.nextToken()); } } else if (lConfig.isNoFactories()) { log.debug("previously scanned " + lConfig.getJar()); } else { Runnable r = new Runnable() { public void run() { final List localFactories = new ArrayList(); boolean foundFactory = false; StringBuffer factoriesAsString = null; try { log.debug("searching " + lConfig.getJar()); ClassLoader l = createClassLoader(loaderConfigs, baseLoader); JarFile jarFile = new JarFile(lConfig.getJar()); ProgressMonitor monitor = null; int entryNumber = 0; if (HermesBrowser.getBrowser() != null) { monitor = new ProgressMonitor(HermesBrowser.getBrowser(), "Looking for factories in " + lConfig.getJar(), "Scanning...", 0, jarFile.size()); monitor.setMillisToDecideToPopup(0); monitor.setMillisToPopup(0); monitor.setProgress(0); } for (Enumeration iter = jarFile.entries(); iter.hasMoreElements();) { ZipEntry entry = (ZipEntry) iter.nextElement(); entryNumber++; if (monitor != null) { monitor.setProgress(entryNumber); monitor.setNote("Checking entry " + entryNumber + " of " + jarFile.size()); } if (entry.getName().endsWith(".class")) { String s = entry.getName().substring(0, entry.getName().indexOf(".class")); s = s.replaceAll("/", "."); try { if (s.startsWith("hermes.browser") || s.startsWith("hermes.impl") || s.startsWith("javax.jms")) { // NOP } else { Class clazz = l.loadClass(s); if (!clazz.isInterface()) { if (implementsOrExtends(clazz, ConnectionFactory.class)) { foundFactory = true; localFactories.add(s); if (factoriesAsString == null) { factoriesAsString = new StringBuffer(); factoriesAsString.append(clazz.getName()); } else { factoriesAsString.append(",").append(clazz.getName()); } log.debug("found " + clazz.getName()); } } /** * TODO: remove Class clazz = l.loadClass(s); * Class[] interfaces = clazz.getInterfaces(); * for (int i = 0; i < interfaces.length; i++) { * if * (interfaces[i].equals(TopicConnectionFactory.class) || * interfaces[i].equals(QueueConnectionFactory.class) || * interfaces[i].equals(ConnectionFactory.class)) { * foundFactory = true; localFactories.add(s); * if (factoriesAsString == null) { * factoriesAsString = new * StringBuffer(clazz.getName()); } else { * factoriesAsString.append(",").append(clazz.getName()); } * log.debug("found " + clazz.getName()); } } */ } } catch (Throwable t) { // NOP } } } } catch (IOException e) { log.error("unable to access jar/zip " + lConfig.getJar() + ": " + e.getMessage(), e); } if (!foundFactory) { lConfig.setNoFactories(true); } else { lConfig.setFactories(factoriesAsString.toString()); rval.addAll(localFactories); } } }; r.run(); } } return rval; }
From source file:com.cwctravel.jenkinsci.plugins.htmlresource.HTMLResourceManagement.java
private boolean validateWebJAR(File file) throws IOException { boolean result = false; if (file.getName().endsWith(".jar")) { JarFile jarFile = new JarFile(file); try {/*www . j a v a 2 s.c o m*/ result = jarFile.size() > 0; } finally { jarFile.close(); } } return result; }
From source file:org.rhq.enterprise.server.core.plugin.ProductPluginDeployer.java
private boolean isDeploymentValidZipFile(File pluginFile) { boolean isValid; JarFile jarFile = null; try {/* ww w .j av a 2 s .co m*/ // Try to access the plugin jar using the JarFile API. // Any weird errors usually mean the file is currently being written but isn't finished yet. // Errors could also mean the file is simply corrupted. jarFile = new JarFile(pluginFile); if (jarFile.size() <= 0) { throw new Exception("There are no entries in the plugin file"); } JarEntry entry = jarFile.entries().nextElement(); entry.getName(); isValid = true; } catch (Exception e) { log.info("File [" + pluginFile + "] is not a valid jarfile - " + " the file may not have been fully written yet. Cause: " + e); isValid = false; } finally { if (jarFile != null) { try { jarFile.close(); } catch (Exception e) { log.error("Failed to close jar file [" + pluginFile + "]"); } } } return isValid; }