/******************************************************************************* * Copyright (c) 2015 BREDEX GmbH. * 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: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.version; import java.io.InputStream; import java.net.URL; import java.util.Properties; import org.apache.commons.lang.text.StrSubstitutor; import org.eclipse.core.runtime.Plugin; import org.osgi.framework.BundleContext; import org.osgi.framework.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author BREDEX GmbH */ public class Vn extends Plugin { /** The plug-in ID */ public static final String PLUGIN_ID = "org.eclipse.jubula.version"; //$NON-NLS-1$ /** key for property access */ public static final String BUILD_VERSION_KEY = "build.version"; //$NON-NLS-1$ /** the logger */ private static Logger log = LoggerFactory.getLogger(Plugin.class); /** The shared instance */ private static Vn plugin; /** The version information */ private Version m_version = Version.emptyVersion; /** {@inheritDoc} */ public void start(BundleContext context) throws Exception { super.start(context); plugin = this; URL url = getBundle().getResource("version.properties"); //$NON-NLS-1$ if (url != null) { Properties p = new Properties(); InputStream versionInfo = null; try { versionInfo = url.openStream(); p.load(versionInfo); String versionString = StrSubstitutor.replace( p.getProperty(BUILD_VERSION_KEY), p); m_version = new Version(versionString); } catch (Throwable t) { log.warn(t.getLocalizedMessage(), t); } finally { if (versionInfo != null) { versionInfo.close(); } } } } /** {@inheritDoc} */ public void stop(BundleContext context) throws Exception { plugin = null; m_version = Version.emptyVersion; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static Vn getDefault() { return plugin; } /** * Returns the shared version information * * @return the shared version information */ public Version getVersion() { return m_version; } }