]> source.dussan.org Git - sonarqube.git/commitdiff
Fix some quality flaws
authorSimon Brandhof <simon.brandhof@gmail.com>
Thu, 30 May 2013 22:33:32 +0000 (00:33 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Thu, 30 May 2013 22:33:32 +0000 (00:33 +0200)
12 files changed:
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/issue/CountUnresolvedIssuesDecorator.java
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/issue/notification/NewIssuesEmailTemplate.java
plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/issue/notification/NewIssuesEmailTemplateTest.java
sonar-core/src/main/java/org/sonar/core/issue/ActionPlanStats.java
sonar-plugin-api/src/main/java/org/sonar/api/issue/Issuable.java
sonar-server/src/main/java/org/sonar/server/issue/IssueService.java
sonar-server/src/main/java/org/sonar/server/platform/NewUserNotifier.java [deleted file]
sonar-server/src/main/java/org/sonar/server/platform/Platform.java
sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
sonar-server/src/main/java/org/sonar/server/user/NewUserNotifier.java [new file with mode: 0644]
sonar-server/src/test/java/org/sonar/server/platform/NewUserNotifierTest.java [deleted file]
sonar-server/src/test/java/org/sonar/server/user/NewUserNotifierTest.java [new file with mode: 0644]

index 643bb8d90416ffb2855180c32fd48e984660d600..17ca21170d6d1ec9d422c465c6a5cd7fd8684a4c 100644 (file)
@@ -20,7 +20,6 @@
 package org.sonar.plugins.core.issue;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Predicate;
 import com.google.common.collect.*;
 import org.apache.commons.lang.time.DateUtils;
 import org.sonar.api.batch.*;
@@ -38,11 +37,8 @@ import org.sonar.batch.components.PastSnapshot;
 import org.sonar.batch.components.TimeMachineConfiguration;
 
 import javax.annotation.Nullable;
-
 import java.util.*;
 
-import static com.google.common.collect.Lists.newArrayList;
-
 /**
  * Computes metrics related to number of issues.
  *
@@ -105,13 +101,13 @@ public class CountUnresolvedIssuesDecorator implements Decorator {
         rulesBag.add(rulefinder.findByKey(issue.ruleKey().repository(), issue.ruleKey().rule()));
         issuesPerSeverity.put(RulePriority.valueOf(issue.severity()), issue);
 
-        if (Issue.STATUS_OPEN.equals(issue.status())){
+        if (Issue.STATUS_OPEN.equals(issue.status())) {
           countOpen++;
         }
-        if (Issue.STATUS_REOPENED.equals(issue.status())){
+        if (Issue.STATUS_REOPENED.equals(issue.status())) {
           countReopened++;
         }
-        if (Issue.STATUS_CONFIRMED.equals(issue.status())){
+        if (Issue.STATUS_CONFIRMED.equals(issue.status())) {
           countConfirmed++;
         }
       }
index 1199da9ff11372dbf077025adf189663918bb06a..b3e883b273e5cfc8dd44270ec8d21eeec786d52f 100644 (file)
@@ -66,11 +66,9 @@ public class NewIssuesEmailTemplate extends EmailTemplate {
     String projectKey = notification.getFieldValue("projectKey");
     String dateString = notification.getFieldValue("projectDate");
     Date date = DateUtils.parseDateTime(dateString);
-    String url = String.format("%s/issues/search?componentRoots=%s&createdAfter=%s", settings.getServerBaseURL(), URLEncoder.encode(projectKey), DateUtils.formatDate(date));
-    sb.append("\n")
-      .append("See it in SonarQube: ")
-      .append(url)
-      .append("\n");
+    String url = String.format("%s/issues/search?componentRoots=%s&createdAfter=%s",
+      settings.getServerBaseURL(), URLEncoder.encode(projectKey), DateUtils.formatDate(date));
+    sb.append("\n").append("See it in SonarQube: ").append(url).append("\n");
   }
 
 }
index af3cc7e4430b04a5a974d9f04cf3c79da24eeced..238b68109014958e56e0af9688a18091d89471dc 100644 (file)
@@ -75,5 +75,4 @@ public class NewIssuesEmailTemplateTest {
       "\n" +
       "See it in SonarQube: http://nemo.sonarsource.org/issues/search?componentRoots=org.apache%3Astruts&createdAfter=2010-05-18\n");
   }
-
 }
index dc42120042a4f2d2bcaf0d2f3a84dadbb85b8afa..371125642c57c61e42b4fe45e1f7f2cc1f4e83fa 100644 (file)
@@ -67,10 +67,10 @@ public class ActionPlanStats extends DefaultActionPlan {
   }
 
   public boolean isOpen(){
-    return ActionPlan.STATUS_OPEN.equals(super.status());
+    return ActionPlan.STATUS_OPEN.equals(status());
   }
 
   public boolean overDue(){
-    return super.status() == ActionPlan.STATUS_OPEN && super.deadLine() != null && new Date().after(super.deadLine());
+    return isOpen() && deadLine() != null && new Date().after(deadLine());
   }
 }
index 7af6bef3bf87141d1b238e128a7be3f2f0ae99f4..cab1cc90818f3e3943ad844b2d7220f1c20620a1 100644 (file)
@@ -38,9 +38,9 @@ public interface Issuable extends Perspective {
 
     IssueBuilder message(@Nullable String message);
 
-    IssueBuilder severity(String severity);
+    IssueBuilder severity(@Nullable String severity);
 
-    IssueBuilder reporter(String reporter);
+    IssueBuilder reporter(@Nullable String reporter);
 
     IssueBuilder effortToFix(@Nullable Double d);
 
index 27f0b0efbbcdbc7950f4c1a6b0964387388259a4..adeed87cf630e47fd67a4b5c4b687180a199c397 100644 (file)
@@ -36,8 +36,8 @@ import org.sonar.core.issue.workflow.IssueWorkflow;
 import org.sonar.core.issue.workflow.Transition;
 import org.sonar.server.user.UserSession;
 
+import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
@@ -108,11 +108,13 @@ public class IssueService implements ServerComponent {
     IssueQueryResult queryResult = loadIssue(issueKey);
     DefaultIssue issue = (DefaultIssue) queryResult.first();
 
-    // TODO check that assignee exists
-    IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.login());
-    if (issueUpdater.assign(issue, assignee, context)) {
-      issueStorage.save(issue);
-      issueNotifications.sendChanges(issue, context, queryResult);
+    if (issue != null) {
+      // TODO check that assignee exists
+      IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.login());
+      if (issueUpdater.assign(issue, assignee, context)) {
+        issueStorage.save(issue);
+        issueNotifications.sendChanges(issue, context, queryResult);
+      }
     }
     return issue;
   }
diff --git a/sonar-server/src/main/java/org/sonar/server/platform/NewUserNotifier.java b/sonar-server/src/main/java/org/sonar/server/platform/NewUserNotifier.java
deleted file mode 100644 (file)
index 2d92b86..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2013 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform;
-
-import org.slf4j.LoggerFactory;
-import org.sonar.api.ServerComponent;
-import org.sonar.api.platform.NewUserHandler;
-
-/**
- * @since 3.2
- */
-public class NewUserNotifier implements ServerComponent {
-
-  private NewUserHandler[] handlers;
-
-  public NewUserNotifier(NewUserHandler[] handlers) {
-    this.handlers = handlers;
-  }
-
-  public NewUserNotifier() {
-    this(new NewUserHandler[0]);
-  }
-
-  public void onNewUser(NewUserHandler.Context context) {
-    LoggerFactory.getLogger(NewUserNotifier.class).debug("User created: " + context.getLogin() + ". Notifying " + NewUserHandler.class.getSimpleName() + " handlers...");
-    for (NewUserHandler handler : handlers) {
-      handler.doOnNewUser(context);
-    }
-  }
-}
\ No newline at end of file
index fcf02b695f83b825879d1ea18b8d80813fd65613..aeba75ab896acd2b3d298c3b5f0444f79ebe2275 100644 (file)
@@ -84,6 +84,7 @@ import org.sonar.server.text.MacroInterpreter;
 import org.sonar.server.text.RubyTextService;
 import org.sonar.server.ui.*;
 import org.sonar.server.user.DefaultRubyUserService;
+import org.sonar.server.user.NewUserNotifier;
 
 import javax.servlet.ServletContext;
 
index c4df84c368c18052b731f6a70b918c5c527b0b3b..5c2626bf14c3bc7db85fd203ab780387270a49b5 100644 (file)
@@ -58,6 +58,7 @@ import org.sonar.server.platform.*;
 import org.sonar.server.plugins.*;
 import org.sonar.server.rules.ProfilesConsole;
 import org.sonar.server.rules.RulesConsole;
+import org.sonar.server.user.NewUserNotifier;
 import org.sonar.updatecenter.common.PluginReferential;
 import org.sonar.updatecenter.common.UpdateCenter;
 import org.sonar.updatecenter.common.Version;
diff --git a/sonar-server/src/main/java/org/sonar/server/user/NewUserNotifier.java b/sonar-server/src/main/java/org/sonar/server/user/NewUserNotifier.java
new file mode 100644 (file)
index 0000000..ed94c4c
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2013 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.user;
+
+import org.slf4j.LoggerFactory;
+import org.sonar.api.ServerComponent;
+import org.sonar.api.platform.NewUserHandler;
+
+/**
+ * @since 3.2
+ */
+public class NewUserNotifier implements ServerComponent {
+
+  private NewUserHandler[] handlers;
+
+  public NewUserNotifier(NewUserHandler[] handlers) {
+    this.handlers = handlers;
+  }
+
+  public NewUserNotifier() {
+    this(new NewUserHandler[0]);
+  }
+
+  public void onNewUser(NewUserHandler.Context context) {
+    LoggerFactory.getLogger(NewUserNotifier.class).debug("User created: " + context.getLogin() + ". Notifying " + NewUserHandler.class.getSimpleName() + " handlers...");
+    for (NewUserHandler handler : handlers) {
+      handler.doOnNewUser(context);
+    }
+  }
+}
\ No newline at end of file
diff --git a/sonar-server/src/test/java/org/sonar/server/platform/NewUserNotifierTest.java b/sonar-server/src/test/java/org/sonar/server/platform/NewUserNotifierTest.java
deleted file mode 100644 (file)
index 230540f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2013 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.platform;
-
-import org.junit.Test;
-import org.sonar.api.platform.NewUserHandler;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-public class NewUserNotifierTest {
-
-  private NewUserHandler.Context context = NewUserHandler.Context.builder().setLogin("marius").setName("Marius").build();
-
-  @Test
-  public void do_not_fail_if_no_handlers() {
-    NewUserNotifier notifier = new NewUserNotifier();
-
-    notifier.onNewUser(context);
-  }
-
-  @Test
-  public void execute_handlers_on_new_user() {
-    NewUserHandler handler1 = mock(NewUserHandler.class);
-    NewUserHandler handler2 = mock(NewUserHandler.class);
-    NewUserNotifier notifier = new NewUserNotifier(new NewUserHandler[]{handler1, handler2});
-
-
-    notifier.onNewUser(context);
-
-    verify(handler1).doOnNewUser(context);
-    verify(handler2).doOnNewUser(context);
-  }
-}
diff --git a/sonar-server/src/test/java/org/sonar/server/user/NewUserNotifierTest.java b/sonar-server/src/test/java/org/sonar/server/user/NewUserNotifierTest.java
new file mode 100644 (file)
index 0000000..c69b467
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2013 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.user;
+
+import org.junit.Test;
+import org.sonar.api.platform.NewUserHandler;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+public class NewUserNotifierTest {
+
+  NewUserHandler.Context context = NewUserHandler.Context.builder().setLogin("marius").setName("Marius").build();
+
+  @Test
+  public void do_not_fail_if_no_handlers() {
+    NewUserNotifier notifier = new NewUserNotifier();
+
+    notifier.onNewUser(context);
+  }
+
+  @Test
+  public void execute_handlers_on_new_user() {
+    NewUserHandler handler1 = mock(NewUserHandler.class);
+    NewUserHandler handler2 = mock(NewUserHandler.class);
+    NewUserNotifier notifier = new NewUserNotifier(new NewUserHandler[]{handler1, handler2});
+
+
+    notifier.onNewUser(context);
+
+    verify(handler1).doOnNewUser(context);
+    verify(handler2).doOnNewUser(context);
+  }
+}