You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/06/15 09:46:02 UTC
[02/11] incubator-brooklyn git commit: Indent BrooklynVersion properly
Indent BrooklynVersion properly
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/b515f38d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/b515f38d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/b515f38d
Branch: refs/heads/master
Commit: b515f38d3e3e4643108c40d4ca46473dfcc49ab5
Parents: 7a3a1f8
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue May 5 17:14:59 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue Jun 2 17:52:49 2015 +0100
----------------------------------------------------------------------
.../src/main/java/brooklyn/BrooklynVersion.java | 398 ++++++++++---------
.../test/java/brooklyn/BrooklynVersionTest.java | 96 ++---
2 files changed, 250 insertions(+), 244 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b515f38d/core/src/main/java/brooklyn/BrooklynVersion.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/BrooklynVersion.java b/core/src/main/java/brooklyn/BrooklynVersion.java
index ec71df7..9920b17 100644
--- a/core/src/main/java/brooklyn/BrooklynVersion.java
+++ b/core/src/main/java/brooklyn/BrooklynVersion.java
@@ -46,201 +46,207 @@ import brooklyn.util.text.Strings;
*/
public class BrooklynVersion {
- private static final Logger log = LoggerFactory.getLogger(BrooklynVersion.class);
-
- private static final String MVN_VERSION_RESOURCE_FILE = "META-INF/maven/org.apache.brooklyn/brooklyn-core/pom.properties";
- private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF";
- private static final String BROOKLYN_CORE_SYMBOLIC_NAME = "org.apache.brooklyn.core";
-
- private static final String MVN_VERSION_PROPERTY_NAME = "version";
- private static final String OSGI_VERSION_PROPERTY_NAME = Attributes.Name.IMPLEMENTATION_VERSION.toString();
- private static final String OSGI_SHA1_PROPERTY_NAME = "Implementation-SHA-1";
-
-
- private final static String VERSION_FROM_STATIC = "0.7.0-SNAPSHOT"; // BROOKLYN_VERSION
- private static final AtomicReference<Boolean> IS_DEV_ENV = new AtomicReference<Boolean>();
-
- public static final BrooklynVersion INSTANCE = new BrooklynVersion();
-
- private final Properties versionProperties = new Properties();
-
- public BrooklynVersion() {
- // we read the maven pom metadata and osgi metadata and make sure it's sensible
- // everything is put into a single map for now (good enough, but should be cleaned up)
- readPropertiesFromMavenResource(BrooklynVersion.class.getClassLoader());
- readPropertiesFromOsgiResource(BrooklynVersion.class.getClassLoader(), BROOKLYN_CORE_SYMBOLIC_NAME);
- // TODO there is also build-metadata.properties used in ServerResource /v1/server/version endpoint
- // see comments on that about folding it into this class instead
-
- checkVersions();
- }
-
- public void checkVersions() {
- String mvnVersion = getVersionFromMavenProperties();
- if (mvnVersion!=null && !VERSION_FROM_STATIC.equals(mvnVersion)) {
- throw new IllegalStateException("Version error: maven "+mvnVersion+" / code "+VERSION_FROM_STATIC);
- }
-
- String osgiVersion = versionProperties.getProperty(OSGI_VERSION_PROPERTY_NAME);
- // TODO does the OSGi version include other slightly differ gubbins/style ?
- if (osgiVersion!=null && !VERSION_FROM_STATIC.equals(osgiVersion)) {
- throw new IllegalStateException("Version error: osgi "+osgiVersion+" / code "+VERSION_FROM_STATIC);
- }
- }
-
- /** Returns version as inferred from classpath/osgi, if possible, or 0.0.0-SNAPSHOT.
- * See also {@link #getVersionFromMavenProperties()} and {@link #getVersionFromOsgiManifest()}.
- * @deprecated since 0.7.0, in favour of the more specific methods (and does anyone need that default value?)
- */
- @Deprecated
- public String getVersionFromClasspath() {
- String v = getVersionFromMavenProperties();
- if (Strings.isNonBlank(v)) return v;
- v = getVersionFromOsgiManifest();
- if (Strings.isNonBlank(v)) return v;
- return "0.0.0-SNAPSHOT";
- }
-
- @Nullable
- public String getVersionFromMavenProperties() {
- return versionProperties.getProperty(MVN_VERSION_PROPERTY_NAME);
- }
-
- @Nullable
- public String getVersionFromOsgiManifest() {
- return versionProperties.getProperty(OSGI_VERSION_PROPERTY_NAME);
- }
-
- @Nullable
- /** SHA1 of the last commit to brooklyn at the time this build was made.
- * For SNAPSHOT builds of course there may have been further non-committed changes. */
- public String getSha1FromOsgiManifest() {
- return versionProperties.getProperty(OSGI_SHA1_PROPERTY_NAME);
- }
-
- public String getVersion() {
- return VERSION_FROM_STATIC;
- }
-
- public boolean isSnapshot() {
- return (getVersion().indexOf("-SNAPSHOT")>=0);
- }
-
- private void readPropertiesFromMavenResource(ClassLoader resourceLoader) {
- InputStream versionStream = null;
- try {
- versionStream = resourceLoader.getResourceAsStream(MVN_VERSION_RESOURCE_FILE);
- if (versionStream==null) {
- if (isDevelopmentEnvironment()) {
- // allowed for dev env
- log.trace("No maven resource file "+MVN_VERSION_RESOURCE_FILE+" available");
- } else {
- log.warn("No maven resource file "+MVN_VERSION_RESOURCE_FILE+" available");
- }
- return;
- }
- versionProperties.load(checkNotNull(versionStream));
- } catch (IOException e) {
- log.warn("Error reading maven resource file "+MVN_VERSION_RESOURCE_FILE+": "+e, e);
- } finally {
- Streams.closeQuietly(versionStream);
+ private static final Logger log = LoggerFactory.getLogger(BrooklynVersion.class);
+
+ private static final String MVN_VERSION_RESOURCE_FILE = "META-INF/maven/org.apache.brooklyn/brooklyn-core/pom.properties";
+ private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF";
+ private static final String BROOKLYN_CORE_SYMBOLIC_NAME = "org.apache.brooklyn.core";
+
+ private static final String MVN_VERSION_PROPERTY_NAME = "version";
+ private static final String OSGI_VERSION_PROPERTY_NAME = Attributes.Name.IMPLEMENTATION_VERSION.toString();
+ private static final String OSGI_SHA1_PROPERTY_NAME = "Implementation-SHA-1";
+
+ private final static String VERSION_FROM_STATIC = "0.7.0-SNAPSHOT"; // BROOKLYN_VERSION
+ private static final AtomicReference<Boolean> IS_DEV_ENV = new AtomicReference<Boolean>();
+
+ public static final BrooklynVersion INSTANCE = new BrooklynVersion();
+
+ private final Properties versionProperties = new Properties();
+
+ public BrooklynVersion() {
+ // we read the maven pom metadata and osgi metadata and make sure it's sensible
+ // everything is put into a single map for now (good enough, but should be cleaned up)
+ readPropertiesFromMavenResource(BrooklynVersion.class.getClassLoader());
+ readPropertiesFromOsgiResource(BrooklynVersion.class.getClassLoader(), BROOKLYN_CORE_SYMBOLIC_NAME);
+ // TODO there is also build-metadata.properties used in ServerResource /v1/server/version endpoint
+ // see comments on that about folding it into this class instead
+
+ checkVersions();
+ }
+
+ public void checkVersions() {
+ String mvnVersion = getVersionFromMavenProperties();
+ if (mvnVersion != null && !VERSION_FROM_STATIC.equals(mvnVersion)) {
+ throw new IllegalStateException("Version error: maven " + mvnVersion + " / code " + VERSION_FROM_STATIC);
+ }
+
+ String osgiVersion = versionProperties.getProperty(OSGI_VERSION_PROPERTY_NAME);
+ // TODO does the OSGi version include other slightly differ gubbins/style ?
+ if (osgiVersion != null && !VERSION_FROM_STATIC.equals(osgiVersion)) {
+ throw new IllegalStateException("Version error: osgi " + osgiVersion + " / code " + VERSION_FROM_STATIC);
+ }
+ }
+
+ /**
+ * Returns version as inferred from classpath/osgi, if possible, or 0.0.0-SNAPSHOT.
+ * See also {@link #getVersionFromMavenProperties()} and {@link #getVersionFromOsgiManifest()}.
+ *
+ * @deprecated since 0.7.0, in favour of the more specific methods (and does anyone need that default value?)
+ */
+ @Deprecated
+ public String getVersionFromClasspath() {
+ String v = getVersionFromMavenProperties();
+ if (Strings.isNonBlank(v)) return v;
+ v = getVersionFromOsgiManifest();
+ if (Strings.isNonBlank(v)) return v;
+ return "0.0.0-SNAPSHOT";
+ }
+
+ @Nullable
+ public String getVersionFromMavenProperties() {
+ return versionProperties.getProperty(MVN_VERSION_PROPERTY_NAME);
+ }
+
+ @Nullable
+ public String getVersionFromOsgiManifest() {
+ return versionProperties.getProperty(OSGI_VERSION_PROPERTY_NAME);
+ }
+
+ @Nullable
+ /** SHA1 of the last commit to brooklyn at the time this build was made.
+ * For SNAPSHOT builds of course there may have been further non-committed changes. */
+ public String getSha1FromOsgiManifest() {
+ return versionProperties.getProperty(OSGI_SHA1_PROPERTY_NAME);
+ }
+
+ public String getVersion() {
+ return VERSION_FROM_STATIC;
+ }
+
+ public boolean isSnapshot() {
+ return (getVersion().indexOf("-SNAPSHOT") >= 0);
+ }
+
+ private void readPropertiesFromMavenResource(ClassLoader resourceLoader) {
+ InputStream versionStream = null;
+ try {
+ versionStream = resourceLoader.getResourceAsStream(MVN_VERSION_RESOURCE_FILE);
+ if (versionStream == null) {
+ if (isDevelopmentEnvironment()) {
+ // allowed for dev env
+ log.trace("No maven resource file " + MVN_VERSION_RESOURCE_FILE + " available");
+ } else {
+ log.warn("No maven resource file " + MVN_VERSION_RESOURCE_FILE + " available");
+ }
+ return;
+ }
+ versionProperties.load(checkNotNull(versionStream));
+ } catch (IOException e) {
+ log.warn("Error reading maven resource file " + MVN_VERSION_RESOURCE_FILE + ": " + e, e);
+ } finally {
+ Streams.closeQuietly(versionStream);
+ }
+ }
+
+ /**
+ * reads properties from brooklyn-core's manifest
+ */
+ private void readPropertiesFromOsgiResource(ClassLoader resourceLoader, String symbolicName) {
+ Enumeration<URL> paths;
+ try {
+ paths = BrooklynVersion.class.getClassLoader().getResources(MANIFEST_PATH);
+ } catch (IOException e) {
+ // shouldn't happen
+ throw Exceptions.propagate(e);
+ }
+ while (paths.hasMoreElements()) {
+ URL u = paths.nextElement();
+ InputStream us = null;
+ try {
+ us = u.openStream();
+ ManifestHelper mh = Osgis.ManifestHelper.forManifest(us);
+ if (BROOKLYN_CORE_SYMBOLIC_NAME.equals(mh.getSymbolicName())) {
+ Attributes attrs = mh.getManifest().getMainAttributes();
+ for (Object key : attrs.keySet()) {
+ // key is an Attribute.Name; toString converts to string
+ versionProperties.put(key.toString(), attrs.getValue(key.toString()));
+ }
+ return;
+ }
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ log.warn("Error reading OSGi manifest from " + u + " when determining version properties: " + e, e);
+ } finally {
+ Streams.closeQuietly(us);
+ }
+ }
+ if (isDevelopmentEnvironment()) {
+ // allowed for dev env
+ log.trace("No OSGi manifest available to determine version properties");
+ } else {
+ log.warn("No OSGi manifest available to determine version properties");
+ }
+ }
+
+ /**
+ * Returns whether this is a Brooklyn dev environment,
+ * specifically core/target/classes/ is on the classpath for the org.apache.brooklyn.core project.
+ * <p/>
+ * In a packaged or library build of Brooklyn (normal usage) this should return false,
+ * and all OSGi components should be available.
+ * <p/>
+ * There is no longer any way to force this,
+ * such as the old BrooklynDevelopmentMode class;
+ * but that could easily be added if required (eg as a system property).
+ */
+ public static boolean isDevelopmentEnvironment() {
+ Boolean isDevEnv = IS_DEV_ENV.get();
+ if (isDevEnv != null) return isDevEnv;
+ synchronized (IS_DEV_ENV) {
+ isDevEnv = computeIsDevelopmentEnvironment();
+ IS_DEV_ENV.set(isDevEnv);
+ return isDevEnv;
+ }
}
- }
-
- /** reads properties from brooklyn-core's manifest */
- private void readPropertiesFromOsgiResource(ClassLoader resourceLoader, String symbolicName) {
- Enumeration<URL> paths;
- try {
- paths = BrooklynVersion.class.getClassLoader().getResources(MANIFEST_PATH);
- } catch (IOException e) {
- // shouldn't happen
- throw Exceptions.propagate(e);
- }
- while (paths.hasMoreElements()) {
- URL u = paths.nextElement();
- InputStream us = null;
- try {
- us = u.openStream();
- ManifestHelper mh = Osgis.ManifestHelper.forManifest(us);
- if (BROOKLYN_CORE_SYMBOLIC_NAME.equals(mh.getSymbolicName())) {
- Attributes attrs = mh.getManifest().getMainAttributes();
- for (Object key: attrs.keySet()) {
- // key is an Attribute.Name; toString converts to string
- versionProperties.put(key.toString(), attrs.getValue(key.toString()));
- }
- return;
- }
- } catch (Exception e) {
- Exceptions.propagateIfFatal(e);
- log.warn("Error reading OSGi manifest from "+u+" when determining version properties: "+e, e);
- } finally {
- Streams.closeQuietly(us);
- }
- }
- if (isDevelopmentEnvironment()) {
- // allowed for dev env
- log.trace("No OSGi manifest available to determine version properties");
- } else {
- log.warn("No OSGi manifest available to determine version properties");
- }
- }
-
- /**
- * Returns whether this is a Brooklyn dev environment,
- * specifically core/target/classes/ is on the classpath for the org.apache.brooklyn.core project.
- * <p>
- * In a packaged or library build of Brooklyn (normal usage) this should return false,
- * and all OSGi components should be available.
- * <p>
- * There is no longer any way to force this,
- * such as the old BrooklynDevelopmentMode class;
- * but that could easily be added if required (eg as a system property).
- */
- public static boolean isDevelopmentEnvironment() {
- Boolean isDevEnv = IS_DEV_ENV.get();
- if (isDevEnv!=null) return isDevEnv;
- synchronized (IS_DEV_ENV) {
- isDevEnv = computeIsDevelopmentEnvironment();
- IS_DEV_ENV.set(isDevEnv);
- return isDevEnv;
- }
- }
-
- private static boolean computeIsDevelopmentEnvironment() {
- Enumeration<URL> paths;
- try {
- paths = BrooklynVersion.class.getClassLoader().getResources("brooklyn/BrooklynVersion.class");
- } catch (IOException e) {
- // shouldn't happen
- throw Exceptions.propagate(e);
- }
- while (paths.hasMoreElements()) {
- URL u = paths.nextElement();
- // running fram a classes directory (including coverage-classes for cobertura) triggers dev env
- if (u.getPath().endsWith("classes/brooklyn/BrooklynVersion.class")) {
- try {
- log.debug("Brooklyn dev/src environment detected: BrooklynVersion class is at: "+u);
- return true;
- } catch (Exception e) {
- Exceptions.propagateIfFatal(e);
- log.warn("Error reading manifest to determine whether this is a development environment: "+e, e);
- }
- }
- }
- return false;
- }
-
- public void logSummary() {
- log.debug("Brooklyn version "+getVersion()+" (git SHA1 "+getSha1FromOsgiManifest()+")");
- }
-
- /** @deprecated since 0.7.0, redundant with {@link #get()} */ @Deprecated
- public static String getVersionFromStatic() {
- return VERSION_FROM_STATIC;
- }
-
- public static String get() {
- return INSTANCE.getVersion();
- }
-
+
+ private static boolean computeIsDevelopmentEnvironment() {
+ Enumeration<URL> paths;
+ try {
+ paths = BrooklynVersion.class.getClassLoader().getResources("brooklyn/BrooklynVersion.class");
+ } catch (IOException e) {
+ // shouldn't happen
+ throw Exceptions.propagate(e);
+ }
+ while (paths.hasMoreElements()) {
+ URL u = paths.nextElement();
+ // running fram a classes directory (including coverage-classes for cobertura) triggers dev env
+ if (u.getPath().endsWith("classes/brooklyn/BrooklynVersion.class")) {
+ try {
+ log.debug("Brooklyn dev/src environment detected: BrooklynVersion class is at: " + u);
+ return true;
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ log.warn("Error reading manifest to determine whether this is a development environment: " + e, e);
+ }
+ }
+ }
+ return false;
+ }
+
+ public void logSummary() {
+ log.debug("Brooklyn version " + getVersion() + " (git SHA1 " + getSha1FromOsgiManifest() + ")");
+ }
+
+ /**
+ * @deprecated since 0.7.0, redundant with {@link #get()}
+ */
+ @Deprecated
+ public static String getVersionFromStatic() {
+ return VERSION_FROM_STATIC;
+ }
+
+ public static String get() {
+ return INSTANCE.getVersion();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b515f38d/core/src/test/java/brooklyn/BrooklynVersionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/BrooklynVersionTest.java b/core/src/test/java/brooklyn/BrooklynVersionTest.java
index 3bc0a19..bfd32ce 100644
--- a/core/src/test/java/brooklyn/BrooklynVersionTest.java
+++ b/core/src/test/java/brooklyn/BrooklynVersionTest.java
@@ -31,52 +31,52 @@ import brooklyn.util.text.Strings;
public class BrooklynVersionTest {
- private static final Logger log = LoggerFactory.getLogger(BrooklynVersionTest.class);
-
- @Test
- public void testGetVersion() {
- assertEquals(BrooklynVersion.get(), BrooklynVersion.INSTANCE.getVersion());
- }
-
- @Test
- public void testGetHardcodedClasspathVersion() {
- @SuppressWarnings("deprecation")
- String v = BrooklynVersion.INSTANCE.getVersionFromClasspath();
- Assert.assertTrue(BrooklynVersion.get().equals(v) || "0.0.0-SNAPSHOT".equals(v), v);
- }
-
- @Test
- public void testGetFromMaven() {
- String v = BrooklynVersion.INSTANCE.getVersionFromMavenProperties();
- Assert.assertTrue(v==null || BrooklynVersion.get().equals(v), v);
- }
-
- @Test
- public void testGetFromOsgi() {
- String v = BrooklynVersion.INSTANCE.getVersionFromOsgiManifest();
- Assert.assertTrue(v==null || BrooklynVersion.get().equals(v), v);
- }
-
- @Test
- public void testGetOsgiSha1() {
- String sha1 = BrooklynVersion.INSTANCE.getSha1FromOsgiManifest();
- log.info("sha1: "+sha1);
- if (Strings.isNonBlank(sha1) || BrooklynVersion.isDevelopmentEnvironment())
- return;
- // we might not have a SHA1 if it's a standalone (non-git) source build; just log warn in that case
- log.warn("This build does not have git SHA1 information.");
- // (can't assert anything, except that sha1 lookup doesn't NPE)
- }
-
- @Test
- public void testDevEnv() {
- URL sp = getClass().getClassLoader().getResource("brooklyn/config/sample.properties");
- if (sp==null) Assert.fail("Can't find test resources");
-
- log.info("Test for dev env: "+"Dev env? "+BrooklynVersion.isDevelopmentEnvironment()+"; path "+sp);
- boolean testResourcePathInClasses = sp.getPath().endsWith("classes/brooklyn/config/sample.properties");
- Assert.assertEquals(testResourcePathInClasses, BrooklynVersion.isDevelopmentEnvironment(),
- "Dev env? "+BrooklynVersion.isDevelopmentEnvironment()+"; but resource path: "+sp);
- }
-
+ private static final Logger log = LoggerFactory.getLogger(BrooklynVersionTest.class);
+
+ @Test
+ public void testGetVersion() {
+ assertEquals(BrooklynVersion.get(), BrooklynVersion.INSTANCE.getVersion());
+ }
+
+ @Test
+ public void testGetHardcodedClasspathVersion() {
+ @SuppressWarnings("deprecation")
+ String v = BrooklynVersion.INSTANCE.getVersionFromClasspath();
+ Assert.assertTrue(BrooklynVersion.get().equals(v) || "0.0.0-SNAPSHOT".equals(v), v);
+ }
+
+ @Test
+ public void testGetFromMaven() {
+ String v = BrooklynVersion.INSTANCE.getVersionFromMavenProperties();
+ Assert.assertTrue(v == null || BrooklynVersion.get().equals(v), v);
+ }
+
+ @Test
+ public void testGetFromOsgi() {
+ String v = BrooklynVersion.INSTANCE.getVersionFromOsgiManifest();
+ Assert.assertTrue(v == null || BrooklynVersion.get().equals(v), v);
+ }
+
+ @Test
+ public void testGetOsgiSha1() {
+ String sha1 = BrooklynVersion.INSTANCE.getSha1FromOsgiManifest();
+ log.info("sha1: " + sha1);
+ if (Strings.isNonBlank(sha1) || BrooklynVersion.isDevelopmentEnvironment())
+ return;
+ // we might not have a SHA1 if it's a standalone (non-git) source build; just log warn in that case
+ log.warn("This build does not have git SHA1 information.");
+ // (can't assert anything, except that sha1 lookup doesn't NPE)
+ }
+
+ @Test
+ public void testDevEnv() {
+ URL sp = getClass().getClassLoader().getResource("brooklyn/config/sample.properties");
+ if (sp == null) Assert.fail("Can't find test resources");
+
+ log.info("Test for dev env: " + "Dev env? " + BrooklynVersion.isDevelopmentEnvironment() + "; path " + sp);
+ boolean testResourcePathInClasses = sp.getPath().endsWith("classes/brooklyn/config/sample.properties");
+ Assert.assertEquals(testResourcePathInClasses, BrooklynVersion.isDevelopmentEnvironment(),
+ "Dev env? " + BrooklynVersion.isDevelopmentEnvironment() + "; but resource path: " + sp);
+ }
+
}