]> source.dussan.org Git - sonarqube.git/commitdiff
Fix an issue with TimeZone ID of UTC
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Mon, 16 Mar 2015 11:18:17 +0000 (12:18 +0100)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Mon, 16 Mar 2015 15:02:17 +0000 (16:02 +0100)
Conflicts:
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java

server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndex.java
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java

index 927cd512148fcc6912a1962a4d3f9a26b2390e2b..ea847c6e0959e33568f22d737aa6ef1e67bdc682 100644 (file)
@@ -64,7 +64,6 @@ import org.sonar.server.view.index.ViewIndexDefinition;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 import static com.google.common.collect.Lists.newArrayList;
@@ -408,9 +407,8 @@ public class IssueIndex extends BaseIndex {
 
   private AggregationBuilder getCreatedAtFacet(IssueQuery query, Map<String, FilterBuilder> filters, QueryBuilder esQuery) {
     Date now = system.newDate();
-    SimpleDateFormat tzFormat = new SimpleDateFormat("XX");
-    tzFormat.setTimeZone(TimeZone.getDefault());
-    String timeZoneString = tzFormat.format(now);
+
+    String timeZoneString = system.getDefaultTimeZone().getID();
 
     DateHistogram.Interval bucketSize = DateHistogram.Interval.YEAR;
     Date createdAfter = query.createdAfter();
index c5cef69a22e2dc136871ffd74abfd5ef7530cb8a..417e8da9148c35c0bfa4917313dfe944c89c12b8 100644 (file)
@@ -53,7 +53,11 @@ import javax.annotation.Nullable;
 import java.util.*;
 
 import static com.google.common.collect.Lists.newArrayList;
-import static org.assertj.core.api.Assertions.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.entry;
+import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class IssueIndexTest {
 
@@ -72,7 +76,12 @@ public class IssueIndexTest {
     issueIndexer = new IssueIndexer(null, tester.client());
     issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, tester.client());
     viewIndexer = new ViewIndexer(null, tester.client());
-    index = new IssueIndex(tester.client(), System2.INSTANCE);
+    System2 system = mock(System2.class);
+    when(system.getDefaultTimeZone()).thenReturn(TimeZone.getTimeZone("+01:00"));
+    when(system.newDate()).thenReturn(new Date());
+
+    index = new IssueIndex(tester.client(), system);
+
   }
 
   @Test
@@ -730,14 +739,14 @@ public class IssueIndexTest {
     SearchResult<IssueDoc> result = index.search(query, options);
     Map<String, Long> buckets = result.getFacets().get("createdAt");
     assertThat(buckets).containsOnly(
-      entry("2014-08-31T01:00:00+0000", 0L),
-      entry("2014-09-01T01:00:00+0000", 2L),
-      entry("2014-09-02T01:00:00+0000", 1L),
-      entry("2014-09-03T01:00:00+0000", 0L),
-      entry("2014-09-04T01:00:00+0000", 0L),
-      entry("2014-09-05T01:00:00+0000", 1L),
-      entry("2014-09-06T01:00:00+0000", 0L),
-      entry("2014-09-07T01:00:00+0000", 0L));
+      entry("2014-08-31T00:00:00+0000", 0L),
+      entry("2014-09-01T00:00:00+0000", 2L),
+      entry("2014-09-02T00:00:00+0000", 1L),
+      entry("2014-09-03T00:00:00+0000", 0L),
+      entry("2014-09-04T00:00:00+0000", 0L),
+      entry("2014-09-05T00:00:00+0000", 1L),
+      entry("2014-09-06T00:00:00+0000", 0L),
+      entry("2014-09-07T00:00:00+0000", 0L));
   }
 
   @Test
@@ -748,10 +757,10 @@ public class IssueIndexTest {
     Map<String, Long> createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2014-09-01")).createdBefore(DateUtils.parseDate("2014-09-21")).build(),
       SearchOptions).getFacets().get("createdAt");
     assertThat(createdAt).containsOnly(
-      entry("2014-08-25T01:00:00+0000", 0L),
-      entry("2014-09-01T01:00:00+0000", 4L),
-      entry("2014-09-08T01:00:00+0000", 0L),
-      entry("2014-09-15T01:00:00+0000", 1L));
+      entry("2014-08-25T00:00:00+0000", 0L),
+      entry("2014-09-01T00:00:00+0000", 4L),
+      entry("2014-09-08T00:00:00+0000", 0L),
+      entry("2014-09-15T00:00:00+0000", 1L));
   }
 
   @Test
@@ -762,12 +771,12 @@ public class IssueIndexTest {
     Map<String, Long> createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2014-09-01")).createdBefore(DateUtils.parseDate("2015-01-19")).build(),
       SearchOptions).getFacets().get("createdAt");
     assertThat(createdAt).containsOnly(
-      entry("2014-08-01T01:00:00+0000", 0L),
-      entry("2014-09-01T01:00:00+0000", 5L),
-      entry("2014-10-01T01:00:00+0000", 0L),
-      entry("2014-11-01T01:00:00+0000", 0L),
-      entry("2014-12-01T01:00:00+0000", 0L),
-      entry("2015-01-01T01:00:00+0000", 1L));
+      entry("2014-08-01T00:00:00+0000", 0L),
+      entry("2014-09-01T00:00:00+0000", 5L),
+      entry("2014-10-01T00:00:00+0000", 0L),
+      entry("2014-11-01T00:00:00+0000", 0L),
+      entry("2014-12-01T00:00:00+0000", 0L),
+      entry("2015-01-01T00:00:00+0000", 1L));
   }
 
   @Test
@@ -777,12 +786,12 @@ public class IssueIndexTest {
     Map<String, Long> createdAt = index.search(IssueQuery.builder().createdAfter(DateUtils.parseDate("2011-01-01")).createdBefore(DateUtils.parseDate("2016-01-01")).build(),
       SearchOptions).getFacets().get("createdAt");
     assertThat(createdAt).containsOnly(
-      entry("2011-01-01T01:00:00+0000", 1L),
-      entry("2012-01-01T01:00:00+0000", 0L),
-      entry("2013-01-01T01:00:00+0000", 0L),
-      entry("2014-01-01T01:00:00+0000", 5L),
-      entry("2015-01-01T01:00:00+0000", 1L),
-      entry("2016-01-01T01:00:00+0000", 0L));
+      entry("2010-01-01T00:00:00+0000", 0L),
+      entry("2011-01-01T00:00:00+0000", 1L),
+      entry("2012-01-01T00:00:00+0000", 0L),
+      entry("2013-01-01T00:00:00+0000", 0L),
+      entry("2014-01-01T00:00:00+0000", 5L),
+      entry("2015-01-01T00:00:00+0000", 1L));
 
   }
 
@@ -795,14 +804,14 @@ public class IssueIndexTest {
       .createdBefore(DateUtils.parseDate("2016-01-01"))
       .build(), options).getFacets().get("createdAt");
     assertThat(createdAt).containsOnly(
-      entry("2009-01-01T01:00:00+0000", 0L),
-      entry("2010-01-01T01:00:00+0000", 0L),
-      entry("2011-01-01T01:00:00+0000", 1L),
-      entry("2012-01-01T01:00:00+0000", 0L),
-      entry("2013-01-01T01:00:00+0000", 0L),
-      entry("2014-01-01T01:00:00+0000", 5L),
-      entry("2015-01-01T01:00:00+0000", 1L),
-      entry("2016-01-01T01:00:00+0000", 0L));
+      entry("2008-01-01T00:00:00+0000", 0L),
+      entry("2009-01-01T00:00:00+0000", 0L),
+      entry("2010-01-01T00:00:00+0000", 0L),
+      entry("2011-01-01T00:00:00+0000", 1L),
+      entry("2012-01-01T00:00:00+0000", 0L),
+      entry("2013-01-01T00:00:00+0000", 0L),
+      entry("2014-01-01T00:00:00+0000", 5L),
+      entry("2015-01-01T00:00:00+0000", 1L));
   }
 
   @Test
@@ -812,12 +821,11 @@ public class IssueIndexTest {
     Map<String, Long> createdAt = index.search(IssueQuery.builder().createdBefore(DateUtils.parseDate("2016-01-01")).build(),
       SearchOptions).getFacets().get("createdAt");
     assertThat(createdAt).containsOnly(
-      entry("2011-01-01T01:00:00+0000", 1L),
-      entry("2012-01-01T01:00:00+0000", 0L),
-      entry("2013-01-01T01:00:00+0000", 0L),
-      entry("2014-01-01T01:00:00+0000", 5L),
-      entry("2015-01-01T01:00:00+0000", 1L),
-      entry("2016-01-01T01:00:00+0000", 0L));
+      entry("2011-01-01T00:00:00+0000", 1L),
+      entry("2012-01-01T00:00:00+0000", 0L),
+      entry("2013-01-01T00:00:00+0000", 0L),
+      entry("2014-01-01T00:00:00+0000", 5L),
+      entry("2015-01-01T00:00:00+0000", 1L));
   }
 
   @Test
index 964df41ed0d51c11be7c0ce9bd900c1ace13640a..27c5cc3e2062edd8c0ff5e83ed92e31850a4de14 100644 (file)
@@ -28,6 +28,7 @@ import javax.annotation.CheckForNull;
 import java.util.Date;
 import java.util.Map;
 import java.util.Properties;
+import java.util.TimeZone;
 
 /**
  * Proxy over {@link java.lang.System}. It aims to improve testability of classes
@@ -126,6 +127,14 @@ public class System2 implements BatchComponent, ServerComponent {
     return new Date();
   }
 
+  /**
+   * @since 5.1
+   * @return the JVM's default time zone
+   */
+  public TimeZone getDefaultTimeZone() {
+    return TimeZone.getDefault();
+  }
+
   /**
    * Closes the object and throws an {@link java.lang.IllegalStateException} on error.
    * @since 5.1