]> source.dussan.org Git - sonarqube.git/commitdiff
Revert "Remove use of DateUtils.truncate since it is not efficient"
authorJulien HENRY <julien.henry@sonarsource.com>
Tue, 17 Mar 2015 09:00:17 +0000 (10:00 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Tue, 17 Mar 2015 09:00:17 +0000 (10:00 +0100)
This reverts commit 46e1d76cc3814518f23b65132e5a8f083bb707a5.

sonar-batch/src/test/java/org/sonar/batch/issue/ModuleIssuesTest.java
sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java
sonar-core/src/test/java/org/sonar/core/issue/db/IssueDtoTest.java
sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java
sonar-plugin-api/src/main/java/org/sonar/api/issue/internal/DefaultIssue.java

index 5ac780e38834e30911715da02de8f8944427e0cc..7ffa990572183c408ce32c438932dfba42ee507d 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.batch.issue;
 
+import org.apache.commons.lang.time.DateUtils;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -39,6 +40,7 @@ import org.sonar.api.rules.Violation;
 import org.sonar.api.utils.Duration;
 import org.sonar.api.utils.MessageException;
 
+import java.util.Calendar;
 import java.util.Date;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -152,7 +154,7 @@ public class ModuleIssuesTest {
     ArgumentCaptor<DefaultIssue> argument = ArgumentCaptor.forClass(DefaultIssue.class);
     verify(cache).put(argument.capture());
     assertThat(argument.getValue().severity()).isEqualTo(Severity.CRITICAL);
-    assertThat(argument.getValue().creationDate()).isEqualTo(analysisDate);
+    assertThat(argument.getValue().creationDate()).isEqualTo(DateUtils.truncate(analysisDate, Calendar.SECOND));
   }
 
   @Test
@@ -171,7 +173,7 @@ public class ModuleIssuesTest {
     ArgumentCaptor<DefaultIssue> argument = ArgumentCaptor.forClass(DefaultIssue.class);
     verify(cache).put(argument.capture());
     assertThat(argument.getValue().severity()).isEqualTo(Severity.INFO);
-    assertThat(argument.getValue().creationDate()).isEqualTo(analysisDate);
+    assertThat(argument.getValue().creationDate()).isEqualTo(DateUtils.truncate(analysisDate, Calendar.SECOND));
   }
 
   @Test
index 454dc26b6a19655b1b4fcdbd91be348e746e8f90..28ce4e2c26c4397c8af01e3c5567c9679c178f08 100644 (file)
@@ -26,6 +26,7 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
 import org.sonar.api.BatchComponent;
 import org.sonar.api.ServerComponent;
 import org.sonar.api.issue.ActionPlan;
@@ -38,6 +39,7 @@ import org.sonar.api.utils.Duration;
 
 import javax.annotation.Nullable;
 
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
 
@@ -182,7 +184,8 @@ public class IssueUpdater implements BatchComponent, ServerComponent {
   }
 
   public void setCloseDate(DefaultIssue issue, @Nullable Date d, IssueChangeContext context) {
-    if (!Objects.equal(d, issue.closeDate())) {
+    Date dateWithoutMilliseconds = d == null ? null : DateUtils.truncate(d, Calendar.SECOND);
+    if (!Objects.equal(dateWithoutMilliseconds, issue.closeDate())) {
       issue.setCloseDate(d);
       issue.setUpdateDate(context.date());
       issue.setChanged(true);
index 415f18eadb08930fff20a4edcef4ff1d4f6d7885..edac8a2dd84dec473b4ba8784ee87e08a97d1b8a 100644 (file)
@@ -29,6 +29,7 @@ import org.sonar.api.utils.Duration;
 import org.sonar.core.rule.RuleDto;
 
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Date;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -105,9 +106,9 @@ public class IssueDtoTest {
     assertThat(issue.assignee()).isEqualTo("perceval");
     assertThat(issue.attribute("key")).isEqualTo("value");
     assertThat(issue.authorLogin()).isEqualTo("pierre");
-    assertThat(issue.creationDate()).isEqualTo(createdAt);
-    assertThat(issue.updateDate()).isEqualTo(updatedAt);
-    assertThat(issue.closeDate()).isEqualTo(closedAt);
+    assertThat(issue.creationDate()).isEqualTo(DateUtils.truncate(createdAt, Calendar.SECOND));
+    assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(updatedAt, Calendar.SECOND));
+    assertThat(issue.closeDate()).isEqualTo(DateUtils.truncate(closedAt, Calendar.SECOND));
     assertThat(issue.isNew()).isFalse();
   }
 
index 7b73af28bc00f5bc74c2e5fd8ed1636ae8d03724..1eb2430420a8c5705aff1f4751ecaefb5035d0d2 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.core.issue.workflow;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
+import org.apache.commons.lang.time.DateUtils;
 import org.junit.Test;
 import org.sonar.api.issue.DefaultTransitions;
 import org.sonar.api.issue.Issue;
@@ -31,6 +32,7 @@ import org.sonar.core.issue.IssueUpdater;
 
 import javax.annotation.Nullable;
 
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
@@ -137,6 +139,7 @@ public class IssueWorkflowTest {
     }
   }
 
+
   @Test
   public void do_automatic_transition() throws Exception {
     workflow.start();
@@ -152,7 +155,7 @@ public class IssueWorkflowTest {
     assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FIXED);
     assertThat(issue.status()).isEqualTo(Issue.STATUS_CLOSED);
     assertThat(issue.closeDate()).isNotNull();
-    assertThat(issue.updateDate()).isEqualTo(now);
+    assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(now, Calendar.SECOND));
   }
 
   @Test
@@ -170,7 +173,7 @@ public class IssueWorkflowTest {
     assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FIXED);
     assertThat(issue.status()).isEqualTo(Issue.STATUS_CLOSED);
     assertThat(issue.closeDate()).isNotNull();
-    assertThat(issue.updateDate()).isEqualTo(now);
+    assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(now, Calendar.SECOND));
   }
 
   @Test
@@ -188,7 +191,7 @@ public class IssueWorkflowTest {
     assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FIXED);
     assertThat(issue.status()).isEqualTo(Issue.STATUS_CLOSED);
     assertThat(issue.closeDate()).isNotNull();
-    assertThat(issue.updateDate()).isEqualTo(now);
+    assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(now, Calendar.SECOND));
   }
 
   @Test
@@ -206,9 +209,10 @@ public class IssueWorkflowTest {
     assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FIXED);
     assertThat(issue.status()).isEqualTo(Issue.STATUS_CLOSED);
     assertThat(issue.closeDate()).isNotNull();
-    assertThat(issue.updateDate()).isEqualTo(now);
+    assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(now, Calendar.SECOND));
   }
 
+
   @Test
   public void fail_if_unknown_status_on_automatic_trans() throws Exception {
     workflow.start();
@@ -279,7 +283,7 @@ public class IssueWorkflowTest {
       Transition.create("resolve", "OPEN", "RESOLVED"),
       Transition.create("falsepositive", "OPEN", "RESOLVED"),
       Transition.create("wontfix", "OPEN", "RESOLVED")
-      );
+    );
 
     workflow.doTransition(issue, "resolve", mock(IssueChangeContext.class));
     assertThat(issue.resolution()).isEqualTo("FIXED");
@@ -287,7 +291,7 @@ public class IssueWorkflowTest {
 
     assertThat(workflow.outTransitions(issue)).containsOnly(
       Transition.create("reopen", "RESOLVED", "REOPENED")
-      );
+    );
 
     workflow.doAutomaticTransition(issue, mock(IssueChangeContext.class));
     assertThat(issue.resolution()).isEqualTo("FIXED");
@@ -310,7 +314,7 @@ public class IssueWorkflowTest {
       Transition.create("resolve", "OPEN", "RESOLVED"),
       Transition.create("falsepositive", "OPEN", "RESOLVED"),
       Transition.create("wontfix", "OPEN", "RESOLVED")
-      );
+    );
 
     workflow.doTransition(issue, "confirm", mock(IssueChangeContext.class));
     assertThat(issue.resolution()).isNull();
@@ -321,7 +325,7 @@ public class IssueWorkflowTest {
       Transition.create("resolve", "CONFIRMED", "RESOLVED"),
       Transition.create("falsepositive", "CONFIRMED", "RESOLVED"),
       Transition.create("wontfix", "CONFIRMED", "RESOLVED")
-      );
+    );
 
     // keep confirmed and unresolved
     workflow.doAutomaticTransition(issue, mock(IssueChangeContext.class));
index 04051ae452757d22ac18d23429de615508d87c2e..05d5d0fc5bdd0f598c21f4ce58370b1bdd227a37 100644 (file)
@@ -29,6 +29,7 @@ import com.google.common.collect.Maps;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
+import org.apache.commons.lang.time.DateUtils;
 import org.sonar.api.issue.Issue;
 import org.sonar.api.issue.IssueComment;
 import org.sonar.api.rule.RuleKey;
@@ -333,7 +334,8 @@ public class DefaultIssue implements Issue {
   }
 
   public DefaultIssue setCreationDate(Date d) {
-    this.creationDate = d;
+    // d is not marked as Nullable but we still allow null parameter for unit testing.
+    this.creationDate = (d != null ? DateUtils.truncate(d, Calendar.SECOND) : null);
     return this;
   }
 
@@ -344,7 +346,7 @@ public class DefaultIssue implements Issue {
   }
 
   public DefaultIssue setUpdateDate(@Nullable Date d) {
-    this.updateDate = d;
+    this.updateDate = (d != null ? DateUtils.truncate(d, Calendar.SECOND) : null);
     return this;
   }
 
@@ -355,7 +357,7 @@ public class DefaultIssue implements Issue {
   }
 
   public DefaultIssue setCloseDate(@Nullable Date d) {
-    this.closeDate = d;
+    this.closeDate = (d != null ? DateUtils.truncate(d, Calendar.SECOND) : null);
     return this;
   }