package com.librato.metrics.client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * Encapsulates logic about versions found in POM files */ public class Versions { private static final Logger LOG = LoggerFactory.getLogger(Versions.class); private Versions() { // do not construct. } /** * Attempts to get a version property from a specified resource * * @param path the path of the properties file resource * @param klass the Class whose classloader will be used to load the resource * @return the found version, "unknown" if it could not be found / determined */ public static String getVersion(String path, Class<?> klass) { try { final InputStream in = klass.getClassLoader().getResourceAsStream(path); if (in != null) { try { final BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line = reader.readLine(); while (line != null) { if (line.startsWith("version")) { return line.split("=")[1]; } line = reader.readLine(); } } finally { in.close(); } } } catch (IOException e) { LOG.error("Could not read package version using path " + path + ":", e); } return "unknown"; } }