/** * This method gets the Version of this program. * * @return the program-version. */ protected String getVersion() { Manifest manifest = ManifestLoader.loadManifest(getClass()); String versionNumber = null; if (manifest != null) { versionNumber = ManifestLoader.getValue(manifest, Attributes.Name.IMPLEMENTATION_VERSION); if (versionNumber == null) { versionNumber = ManifestLoader.getValue(manifest, Attributes.Name.SPECIFICATION_VERSION); } } if (versionNumber == null) { versionNumber = SNAPSHOT; } return versionNumber; }
/** * The constructor. * * @param classloader is the {@link ClassLoader} used to find and load the {@link Manifest}s. */ private ManifestLoader(ClassLoader classloader) { super(); try { List<Manifest> mutableList = new ArrayList<>(); Enumeration<URL> urls = classloader.getResources(JarFile.MANIFEST_NAME); while (urls.hasMoreElements()) { URL url = urls.nextElement(); InputStream inputStream = url.openStream(); try { Manifest manifest = new Manifest(); manifest.read(inputStream); completeManifest(manifest, url); mutableList.add(manifest); } finally { inputStream.close(); } } this.manifests = Collections.unmodifiableList(mutableList); } catch (IOException e) { throw new IllegalStateException("Failed to read manifest.", e); } }