]> source.dussan.org Git - sonarqube.git/commitdiff
Improve org.sonar.api.utils.System2 :
authorSimon Brandhof <simon.brandhof@gmail.com>
Tue, 25 Mar 2014 10:20:50 +0000 (11:20 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Tue, 25 Mar 2014 10:40:39 +0000 (11:40 +0100)
* add to picocontainer
* new method isJavaAtLeast17()
* fix Javadoc

sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java
sonar-plugin-api/src/test/java/org/sonar/api/utils/System2Test.java
sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java

index c6bd4a1f93e055be77aedaebed3291dc061df4e9..704548f5991aaaeaba8224fe2e7d6ed9e6600851 100644 (file)
@@ -26,6 +26,7 @@ import org.sonar.api.platform.ComponentContainer;
 import org.sonar.api.platform.PluginMetadata;
 import org.sonar.api.utils.Durations;
 import org.sonar.api.utils.HttpDownloader;
+import org.sonar.api.utils.System2;
 import org.sonar.api.utils.UriReader;
 import org.sonar.api.utils.internal.TempFolderCleaner;
 import org.sonar.batch.components.*;
@@ -83,7 +84,8 @@ public class BootstrapContainer extends ComponentContainer {
       TempFolderCleaner.class,
       HttpDownloader.class,
       UriReader.class,
-      new FileCacheProvider());
+      new FileCacheProvider(),
+      System2.INSTANCE);
   }
 
   private void addDatabaseComponents() {
index 44c909249390c64f72c6a6f50e4cea3f0e0a7016..bae39cb097445950b842d6898beb723b90bf8892 100644 (file)
@@ -20,6 +20,8 @@
 package org.sonar.api.utils;
 
 import org.apache.commons.lang.SystemUtils;
+import org.sonar.api.BatchComponent;
+import org.sonar.api.ServerComponent;
 
 import javax.annotation.CheckForNull;
 import java.util.Map;
@@ -28,7 +30,7 @@ import java.util.Properties;
 /**
  * Proxy over {@link java.lang.System}. It aims to improve testability of classes
  * that interact with low-level system methods, for example :
- *
+ * <p/>
  * <pre>
  * public class MyClass {
  *   private final System2 system;
@@ -42,7 +44,7 @@ import java.util.Properties;
  *   }
  * }
  *
- * @Test
+ * {@literal @}Test
  * public void should_return_xxx() {
  *   // using Mockito
  *   System2 system = mock(System2.class);
@@ -51,13 +53,14 @@ import java.util.Properties;
  *   assertThat(new MyClass(system).xxx()).isEqualTo(now);
  * }
  * </pre>
- *
  * <p/>
  * Note that the name System2 was chosen to not conflict with {@link java.lang.System}.
+ * <p/>
+ * An instance is available in IoC container since 4.3.
  *
  * @since 4.2
  */
-public class System2 {
+public class System2 implements BatchComponent, ServerComponent {
 
   public static final System2 INSTANCE = new System2();
 
@@ -105,6 +108,14 @@ public class System2 {
     return SystemUtils.IS_OS_WINDOWS;
   }
 
+  /**
+   * True if Java 7 or Java 8 runtime environment
+   * @since 4.3
+   */
+  public boolean isJavaAtLeast17() {
+    return SystemUtils.isJavaVersionAtLeast(1.7f);
+  }
+
   public void println(String obj) {
     System.out.print(obj);
   }
index 6157218cf2ec9f53fbbd6c263a7daff36285cec8..d60c869c5477929b65b2eba13b33fdda93e187a4 100644 (file)
@@ -51,7 +51,7 @@ public class System2Test {
 
   @Test
   public void testEnvVariables() throws Exception {
-    Map<String,String> expected = System.getenv();
+    Map<String, String> expected = System.getenv();
     assertThat(System2.INSTANCE.envVariables()).isNotNull().isEqualTo(expected);
   }
 
@@ -72,6 +72,15 @@ public class System2Test {
     assertThat(System2.INSTANCE.isOsWindows()).isEqualTo(SystemUtils.IS_OS_WINDOWS);
   }
 
+  @Test
+  public void testIsJavaAtLeast17() throws Exception {
+    if (SystemUtils.IS_JAVA_1_6) {
+      assertThat(System2.INSTANCE.isJavaAtLeast17()).isFalse();
+    } else {
+      assertThat(System2.INSTANCE.isJavaAtLeast17()).isTrue();
+    }
+  }
+
   @Test
   public void testPrintln() throws Exception {
     // well, how to assert that ? Adding a System3 dependency to System2 ? :-)
index fb4f1ff16c4eebde0f05c819d05239f9947db811..31b4a0234d8981b02e9c4d442d772548328afe3c 100644 (file)
@@ -34,6 +34,7 @@ import org.sonar.api.rules.XMLRuleParser;
 import org.sonar.api.server.rule.RulesDefinitionXmlLoader;
 import org.sonar.api.utils.Durations;
 import org.sonar.api.utils.HttpDownloader;
+import org.sonar.api.utils.System2;
 import org.sonar.api.utils.UriReader;
 import org.sonar.api.utils.internal.TempFolderCleaner;
 import org.sonar.core.component.SnapshotPerspectives;
@@ -161,7 +162,8 @@ class ServerComponents {
       SemaphoreUpdater.class,
       SemaphoresImpl.class,
       TempFolderCleaner.class,
-      new TempFolderProvider()
+      new TempFolderProvider(),
+      System2.INSTANCE
     ));
     components.addAll(DatabaseMigrations.CLASSES);
     components.addAll(DaoUtils.getDaoClasses());