]> source.dussan.org Git - sonarqube.git/commitdiff
GOV-331 factor multiple Project classes into one
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Tue, 27 Mar 2018 09:55:41 +0000 (11:55 +0200)
committerSonarTech <sonartech@sonarsource.com>
Fri, 6 Apr 2018 18:21:52 +0000 (20:21 +0200)
32 files changed:
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/AnalysisMetadataHolder.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/AnalysisMetadataHolderImpl.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/MutableAnalysisMetadataHolder.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/component/ComponentTreeBuilder.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/view/TriggerViewRefreshDelegate.java
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTask.java
server/sonar-server/src/main/java/org/sonar/server/project/Project.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/webhook/Project.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/webhook/ProjectAnalysis.java
server/sonar-server/src/main/java/org/sonar/server/webhook/WebhookPayloadFactoryImpl.java
server/sonar-server/src/main/java/org/sonar/server/webhook/WebhookQGChangeEventListener.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/AnalysisMetadataHolderImplTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/AnalysisMetadataHolderRule.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/MutableAnalysisMetadataHolderRule.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java [deleted file]
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/component/BranchPersisterImplTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/component/ComponentTreeBuilderTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/component/ConfigurationRepositoryTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/BuildComponentTreeStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/PersistLiveMeasuresStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/QualityGateEventsStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ReportPersistComponentsStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/TriggerViewRefreshStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/webhook/WebhookPostTaskTest.java
server/sonar-server/src/test/java/org/sonar/server/project/ProjectTest.java [new file with mode: 0644]
server/sonar-server/src/test/java/org/sonar/server/webhook/ProjectAnalysisTest.java
server/sonar-server/src/test/java/org/sonar/server/webhook/ProjectTest.java [deleted file]
server/sonar-server/src/test/java/org/sonar/server/webhook/WebhookPayloadFactoryImplTest.java
server/sonar-server/src/test/java/org/sonar/server/webhook/WebhookQGChangeEventListenerTest.java

index 77738cc6ffb810762974abc93f6359d7d76d7119..c6e00eb87e09342b6bb8d30da7b01d9a9828ec22 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.server.computation.task.projectanalysis.analysis;
 
 import java.util.Map;
 import javax.annotation.CheckForNull;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualityprofile.QualityProfile;
 
 public interface AnalysisMetadataHolder {
index 6fee4c5f70c08e4b52d384d8e1483254848d23ad..157da3ac9cb168f7139e35f137caab604978376c 100644 (file)
@@ -25,6 +25,7 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import org.sonar.db.component.BranchType;
 import org.sonar.server.computation.util.InitializedProperty;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualityprofile.QualityProfile;
 
 import static com.google.common.base.Preconditions.checkState;
index 09acc83d648320be924d3249f8b4058d2f1a2015..a23d83f5841d8bffae4d86b2795337bdfe75b3b4 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.server.computation.task.projectanalysis.analysis;
 
 import java.util.Map;
 import javax.annotation.Nullable;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualityprofile.QualityProfile;
 
 public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java
deleted file mode 100644 (file)
index b683160..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2018 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program 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.
- *
- * This program 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.computation.task.projectanalysis.analysis;
-
-import javax.annotation.Nullable;
-import javax.annotation.concurrent.Immutable;
-
-@Immutable
-public class Project {
-
-  private final String uuid;
-  private final String key;
-  private final String name;
-  private final String description;
-
-  public Project(String uuid, String key, String name) {
-    this(uuid, key, name, null);
-  }
-
-  public Project(String uuid, String key, String name, @Nullable String description) {
-    this.uuid = uuid;
-    this.key = key;
-    this.name = name;
-    this.description = description;
-  }
-
-  /**
-   * Always links to a row that exists in database.
-   */
-  public String getUuid() {
-    return uuid;
-  }
-
-  /**
-   * Always links to a row that exists in database.
-   */
-  public String getKey() {
-    return key;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public String getDescription() {
-    return description;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    Project project = (Project) o;
-    return uuid.equals(project.uuid);
-  }
-
-  @Override
-  public int hashCode() {
-    return uuid.hashCode();
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder("Project{");
-    sb.append("uuid='").append(uuid).append('\'');
-    sb.append(", key='").append(key).append('\'');
-    sb.append(", name='").append(name).append('\'');
-    sb.append(", description=").append(toString(this.description));
-    sb.append('}');
-    return sb.toString();
-  }
-
-  private static String toString(@Nullable String s) {
-    if (s == null) {
-      return null;
-    }
-    return '\'' + s + '\'';
-  }
-
-}
index 36365235fa313080660f3b9a200de3958059713c..50cdf2e082a88c72856530e5d88532591f9a0e53 100644 (file)
@@ -28,7 +28,7 @@ import org.sonar.db.component.SnapshotDto;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.scanner.protocol.output.ScannerReport.Component.FileStatus;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 
 import static com.google.common.base.MoreObjects.firstNonNull;
 import static com.google.common.base.Preconditions.checkArgument;
index c74e9d4678995878853b11154871bf6aec7382db..88bcb8fffaf46ac4f4c36460773d28a1fb79347e 100644 (file)
@@ -42,7 +42,7 @@ import org.sonar.scanner.protocol.output.ScannerReport.Metadata.Plugin;
 import org.sonar.scanner.protocol.output.ScannerReport.Metadata.QProfile;
 import org.sonar.server.computation.task.projectanalysis.analysis.MutableAnalysisMetadataHolder;
 import org.sonar.server.computation.task.projectanalysis.analysis.Organization;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.analysis.ScannerPlugin;
 import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReader;
 import org.sonar.server.computation.task.projectanalysis.component.BranchLoader;
index e36832051b685672ce52969d9c1e6dac8e50e2b7..9ade436f8c6d60ec606e92cbab7102d14957487f 100644 (file)
@@ -21,7 +21,7 @@
 package org.sonar.server.computation.task.projectanalysis.view;
 
 import java.util.function.Consumer;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 
 public interface TriggerViewRefreshDelegate extends Consumer<Project> {
 }
index e8be7daead6ebe7c759822416641d60232324952..e043b37fecfb30f0376e85e942bf7c0fd34730da 100644 (file)
@@ -25,13 +25,13 @@ import java.util.Set;
 import org.sonar.api.ce.posttask.PostProjectAnalysisTask;
 import org.sonar.api.measures.Metric;
 import org.sonar.core.util.stream.MoreCollectors;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.Condition;
 import org.sonar.server.qualitygate.EvaluatedCondition;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
 import org.sonar.server.webhook.Analysis;
 import org.sonar.server.webhook.Branch;
 import org.sonar.server.webhook.CeTask;
-import org.sonar.server.webhook.Project;
 import org.sonar.server.webhook.WebHooks;
 import org.sonar.server.webhook.WebhookPayloadFactory;
 
diff --git a/server/sonar-server/src/main/java/org/sonar/server/project/Project.java b/server/sonar-server/src/main/java/org/sonar/server/project/Project.java
new file mode 100644 (file)
index 0000000..dd36874
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program 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.
+ *
+ * This program 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.project;
+
+import java.util.Objects;
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.Immutable;
+
+@Immutable
+public class Project {
+
+  private final String uuid;
+  private final String key;
+  private final String name;
+  private final String description;
+
+  public Project(String uuid, String key, String name) {
+    this(uuid, key, name, null);
+  }
+
+  public Project(String uuid, String key, String name, @Nullable String description) {
+    this.uuid = uuid;
+    this.key = key;
+    this.name = name;
+    this.description = description;
+  }
+
+  /**
+   * Always links to a row that exists in database.
+   */
+  public String getUuid() {
+    return uuid;
+  }
+
+  /**
+   * Always links to a row that exists in database.
+   */
+  public String getKey() {
+    return key;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public String getDescription() {
+    return description;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    Project project = (Project) o;
+    return uuid.equals(project.uuid)
+      && key.equals(project.key)
+      && name.equals(project.name);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(uuid, key, name);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("Project{");
+    sb.append("uuid='").append(uuid).append('\'');
+    sb.append(", key='").append(key).append('\'');
+    sb.append(", name='").append(name).append('\'');
+    sb.append(", description=").append(toString(this.description));
+    sb.append('}');
+    return sb.toString();
+  }
+
+  private static String toString(@Nullable String s) {
+    if (s == null) {
+      return null;
+    }
+    return '\'' + s + '\'';
+  }
+
+}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/webhook/Project.java b/server/sonar-server/src/main/java/org/sonar/server/webhook/Project.java
deleted file mode 100644 (file)
index ae2b383..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2018 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program 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.
- *
- * This program 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.webhook;
-
-import java.util.Objects;
-
-import static java.util.Objects.requireNonNull;
-
-public final class Project {
-  private final String uuid;
-  private final String key;
-  private final String name;
-
-  public Project(String uuid, String key, String name) {
-    this.uuid = requireNonNull(uuid, "uuid can't be null");
-    this.key = requireNonNull(key, "key can't be null");
-    this.name = requireNonNull(name, "name can't be null");
-  }
-
-  public String getUuid() {
-    return uuid;
-  }
-
-  public String getKey() {
-    return key;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    Project project = (Project) o;
-    return Objects.equals(uuid, project.uuid) &&
-      Objects.equals(key, project.key) &&
-      Objects.equals(name, project.name);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(uuid, key, name);
-  }
-
-  @Override
-  public String toString() {
-    return "Project{" +
-      "uuid='" + uuid + '\'' +
-      ", key='" + key + '\'' +
-      ", name='" + name + '\'' +
-      '}';
-  }
-}
index 2e055ad77f6cc200a7edd0077a73dc2e1a418b16..3a9175adbfb8b9cfdaf4daafa242975ea24b513e 100644 (file)
@@ -23,6 +23,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import javax.annotation.Nullable;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
 
 import static com.google.common.collect.ImmutableMap.copyOf;
index 39f6d102c5b47de11be2efb5f8b30dd25831117a..32440c4b2cbf532933035632b08d419f27714003 100644 (file)
@@ -30,6 +30,7 @@ import org.sonar.api.ce.ComputeEngineSide;
 import org.sonar.api.platform.Server;
 import org.sonar.api.utils.System2;
 import org.sonar.api.utils.text.JsonWriter;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.Condition;
 import org.sonar.server.qualitygate.EvaluatedCondition;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
index f7d3310af8bad71288b66fafaa34f098900340bd..ee040fa0afca4b34c587ffe2a6ef5f1fc64ebaf0 100644 (file)
@@ -32,6 +32,7 @@ import org.sonar.db.component.AnalysisPropertyDto;
 import org.sonar.db.component.BranchDto;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.SnapshotDto;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
 import org.sonar.server.qualitygate.changeevent.QGChangeEvent;
 import org.sonar.server.qualitygate.changeevent.QGChangeEventListener;
index 4a112bbb4de586ca5629ec0b1177647ad5cd554d..58d9a362a6d4675a6b597e967f2759ca2a561051 100644 (file)
@@ -25,6 +25,7 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.component.BranchType;
 import org.sonar.db.organization.OrganizationDto;
 import org.sonar.server.computation.task.projectanalysis.component.DefaultBranchImpl;
+import org.sonar.server.project.Project;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
index 08f75f27e95e80b5640800a3d3f75a5cecd75d24..a24e7311c65c06c4f30f188a6103ecf63f4ec3ba 100644 (file)
@@ -27,6 +27,7 @@ import org.junit.rules.ExternalResource;
 import org.sonar.db.component.BranchType;
 import org.sonar.db.organization.OrganizationDto;
 import org.sonar.server.computation.util.InitializedProperty;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualityprofile.QualityProfile;
 
 import static com.google.common.base.Preconditions.checkNotNull;
index 24a8f1d15fd1ed4322c1e040994cdd4fdd5d8201..5eb99bc59f33d20d95a2fa76cb7f96e741335a02 100644 (file)
@@ -23,6 +23,7 @@ import java.util.Map;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import org.junit.rules.ExternalResource;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualityprofile.QualityProfile;
 
 public class MutableAnalysisMetadataHolderRule extends ExternalResource implements MutableAnalysisMetadataHolder {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java
deleted file mode 100644 (file)
index c5b64f8..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2018 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program 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.
- *
- * This program 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.computation.task.projectanalysis.analysis;
-
-import org.junit.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class ProjectTest {
-  @Test
-  public void test_bean_without_description() {
-    Project project1 = new Project("U1", "K1", "N1");
-    Project project2 = new Project("U1", "K1", "N1", null);
-
-    assertThat(project1.getUuid()).isEqualTo(project2.getUuid()).isEqualTo("U1");
-    assertThat(project1.getKey()).isEqualTo(project2.getKey()).isEqualTo("K1");
-    assertThat(project1.getName()).isEqualTo(project2.getName()).isEqualTo("N1");
-    assertThat(project1.getDescription()).isEqualTo(project2.getDescription()).isNull();
-
-    assertThat(project1.toString())
-      .isEqualTo(project2.toString())
-      .isEqualTo("Project{uuid='U1', key='K1', name='N1', description=null}");
-  }
-  @Test
-  public void test_bean_with_description() {
-    Project project1 = new Project("U1", "K1", "N1", "D1");
-
-    assertThat(project1.getUuid()).isEqualTo("U1");
-    assertThat(project1.getKey()).isEqualTo("K1");
-    assertThat(project1.getName()).isEqualTo("N1");
-    assertThat(project1.getDescription()).isEqualTo("D1");
-
-    assertThat(project1.toString())
-      .isEqualTo(project1.toString())
-      .isEqualTo("Project{uuid='U1', key='K1', name='N1', description='D1'}");
-  }
-
-  @Test
-  public void test_equals_and_hashCode() {
-    Project project1 = new Project("U1", "K1", "N1");
-    Project project2 = new Project("U1", "K1", "N1", "D1");
-
-    assertThat(project1).isEqualTo(project1);
-    assertThat(project1).isNotEqualTo(null);
-    assertThat(project1).isNotEqualTo(new Object());
-    assertThat(project1).isEqualTo(new Project("U1", "K1", "N1", null));
-    assertThat(project1).isEqualTo(new Project("U1", "K2", "N1", null));
-    assertThat(project1).isEqualTo(new Project("U1", "K1", "N2", null));
-    assertThat(project1).isEqualTo(project2);
-
-    assertThat(project1.hashCode()).isEqualTo(project1.hashCode());
-    assertThat(project1.hashCode()).isNotEqualTo(null);
-    assertThat(project1.hashCode()).isNotEqualTo(new Object().hashCode());
-    assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K1", "N1", null).hashCode());
-    assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K2", "N1", null).hashCode());
-    assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K1", "N2", null).hashCode());
-    assertThat(project1.hashCode()).isEqualTo(project2.hashCode());
-  }
-
-}
index 252d510fe341d5667f45bf6aa46cd33ff3db459e..12a8855e42b20f42d70f9c31109105c0c5b769fa 100644 (file)
@@ -30,7 +30,7 @@ import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentTesting;
 import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
index bc1096dc5519af1f3b9b9f594e1acdac151790be..a140b43050f098c64c23112e0fee14af78899a33 100644 (file)
@@ -35,7 +35,7 @@ import org.sonar.core.component.ComponentKeys;
 import org.sonar.db.component.SnapshotDto;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
index fbd6cf41791b8c5e57031d4eacb8ea17cc574260..810e19c0fab42dd13ec19b1c492191a39090f5ce 100644 (file)
@@ -32,7 +32,7 @@ import org.sonar.db.component.ComponentDto;
 import org.sonar.db.property.PropertyDto;
 import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
index 906c345a1ad9b124d54a42a054246ca44bb41178..0c7e75ae9998f8548dcc7cae0df33ef5b7f81b2d 100644 (file)
@@ -39,7 +39,7 @@ import org.sonar.scanner.protocol.output.ScannerReport.Component.ComponentType;
 import org.sonar.scanner.protocol.output.ScannerReport.Component.FileStatus;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
 import org.sonar.server.computation.task.projectanalysis.analysis.MutableAnalysisMetadataHolderRule;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReaderRule;
 import org.sonar.server.computation.task.projectanalysis.component.Component;
 import org.sonar.server.computation.task.projectanalysis.component.DefaultBranchImpl;
index a123e69b0b1ab640990041b42679f92fe5c0dde1..587d5ae5349370cd106a7018d21bc45399a597de 100644 (file)
@@ -39,7 +39,7 @@ import org.sonar.db.organization.OrganizationDto;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.server.computation.task.projectanalysis.analysis.MutableAnalysisMetadataHolderRule;
 import org.sonar.server.computation.task.projectanalysis.analysis.Organization;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.analysis.ScannerPlugin;
 import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReaderRule;
 import org.sonar.server.computation.task.projectanalysis.component.BranchLoader;
index 7db1635a996a8b7932f010459125475f02096a75..04793b0dca6f57e51593f53c1b18ed05e5c64264 100644 (file)
@@ -31,7 +31,7 @@ import org.sonar.db.component.ComponentDto;
 import org.sonar.db.measure.LiveMeasureDto;
 import org.sonar.db.metric.MetricDto;
 import org.sonar.server.computation.task.projectanalysis.analysis.MutableAnalysisMetadataHolderRule;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.component.Component;
 import org.sonar.server.computation.task.projectanalysis.component.ReportComponent;
 import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolderRule;
index 0501ef46791888ae835b95dc69627e5fde1dfebd..03deaea4de4608131d71c21ba8f327e3cf7a7907 100644 (file)
@@ -28,7 +28,7 @@ import org.sonar.api.notifications.Notification;
 import org.sonar.db.component.BranchType;
 import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.component.Component;
 import org.sonar.server.computation.task.projectanalysis.component.DefaultBranchImpl;
 import org.sonar.server.computation.task.projectanalysis.component.ReportComponent;
index 75a68862c44654b14a285d63d7b5a9cbf7e1e376..13c3ade55c26f41f2c02baf15bfa7e7a41795f0f 100644 (file)
@@ -39,7 +39,7 @@ import org.sonar.db.component.ComponentTesting;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
 import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.component.BranchPersister;
 import org.sonar.server.computation.task.projectanalysis.component.Component;
 import org.sonar.server.computation.task.projectanalysis.component.DefaultBranchImpl;
index 155475b5ac5001c472d15953849a703284499111..aa36a257eb97f3ae6ae4a39f1c7315e676134832 100644 (file)
@@ -21,7 +21,7 @@ package org.sonar.server.computation.task.projectanalysis.step;
 
 import org.junit.Test;
 import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder;
-import org.sonar.server.computation.task.projectanalysis.analysis.Project;
+import org.sonar.server.project.Project;
 import org.sonar.server.computation.task.projectanalysis.view.TriggerViewRefreshDelegate;
 
 import static org.mockito.Mockito.mock;
index bb8616830f80e2ced109fc88f57570cd41c29921..02c27ac314edc62acb32fec9e9015c29ad0d7eaf 100644 (file)
@@ -158,7 +158,7 @@ public class WebhookPostTaskTest {
     }
 
     verify(payloadFactory).create(new ProjectAnalysis(
-      new org.sonar.server.webhook.Project(project.getUuid(), project.getKey(), project.getName()),
+      new org.sonar.server.project.Project(project.getUuid(), project.getKey(), project.getName()),
       new org.sonar.server.webhook.CeTask(ceTask.getId(), org.sonar.server.webhook.CeTask.Status.valueOf(ceTask.getStatus().name())),
       analysisUUid == null ? null : new Analysis(analysisUUid, date.getTime()),
       new org.sonar.server.webhook.Branch(branch.isMain(), branch.getName().get(), org.sonar.server.webhook.Branch.Type.valueOf(branch.getType().name())),
diff --git a/server/sonar-server/src/test/java/org/sonar/server/project/ProjectTest.java b/server/sonar-server/src/test/java/org/sonar/server/project/ProjectTest.java
new file mode 100644 (file)
index 0000000..4f2a351
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program 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.
+ *
+ * This program 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.project;
+
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ProjectTest {
+  @Test
+  public void test_bean_without_description() {
+    Project project1 = new Project("U1", "K1", "N1");
+    Project project2 = new Project("U1", "K1", "N1", null);
+
+    assertThat(project1.getUuid()).isEqualTo(project2.getUuid()).isEqualTo("U1");
+    assertThat(project1.getKey()).isEqualTo(project2.getKey()).isEqualTo("K1");
+    assertThat(project1.getName()).isEqualTo(project2.getName()).isEqualTo("N1");
+    assertThat(project1.getDescription()).isEqualTo(project2.getDescription()).isNull();
+
+    assertThat(project1.toString())
+      .isEqualTo(project2.toString())
+      .isEqualTo("Project{uuid='U1', key='K1', name='N1', description=null}");
+  }
+
+  @Test
+  public void test_bean_with_description() {
+    Project project1 = new Project("U1", "K1", "N1", "D1");
+
+    assertThat(project1.getUuid()).isEqualTo("U1");
+    assertThat(project1.getKey()).isEqualTo("K1");
+    assertThat(project1.getName()).isEqualTo("N1");
+    assertThat(project1.getDescription()).isEqualTo("D1");
+
+    assertThat(project1.toString())
+      .isEqualTo(project1.toString())
+      .isEqualTo("Project{uuid='U1', key='K1', name='N1', description='D1'}");
+  }
+
+  @Test
+  public void test_equals_and_hashCode() {
+    Project project1 = new Project("U1", "K1", "N1");
+    Project project2 = new Project("U1", "K1", "N1", "D1");
+
+    assertThat(project1).isEqualTo(project1);
+    assertThat(project1).isNotEqualTo(null);
+    assertThat(project1).isNotEqualTo(new Object());
+    assertThat(project1).isEqualTo(new Project("U1", "K1", "N1", null));
+    assertThat(project1).isNotEqualTo(new Project("U1", "K2", "N1", null));
+    assertThat(project1).isNotEqualTo(new Project("U1", "K1", "N2", null));
+    assertThat(project1).isEqualTo(project2);
+
+    assertThat(project1.hashCode()).isEqualTo(project1.hashCode());
+    assertThat(project1.hashCode()).isNotEqualTo(null);
+    assertThat(project1.hashCode()).isNotEqualTo(new Object().hashCode());
+    assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K1", "N1", null).hashCode());
+    assertThat(project1.hashCode()).isNotEqualTo(new Project("U1", "K2", "N1", null).hashCode());
+    assertThat(project1.hashCode()).isNotEqualTo(new Project("U1", "K1", "N2", null).hashCode());
+    assertThat(project1.hashCode()).isEqualTo(project2.hashCode());
+  }
+
+}
index 21c7cb873906b22f2f7d32b30cfd226edb76fde8..0a453709b6779f0d0140312bddf49d72a2acd953 100644 (file)
@@ -25,6 +25,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.api.measures.Metric;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
 import org.sonar.server.qualitygate.QualityGate;
 
@@ -148,6 +149,6 @@ public class ProjectAnalysisTest {
   @Test
   public void verify_toString() {
     assertThat(underTest.toString()).isEqualTo(
-      "ProjectAnalysis{project=Project{uuid='uuid', key='key', name='name'}, ceTask=CeTask{id='id', status=SUCCESS}, branch=Branch{main=true, name='name', type=SHORT}, qualityGate=EvaluatedQualityGate{qualityGate=QualityGate{id=id, name='name', conditions=[]}, status=WARN, evaluatedConditions=[]}, updatedAt=1, properties={a=b}, analysis=Analysis{uuid='analysis_uuid', date=1500}}");
+      "ProjectAnalysis{project=Project{uuid='uuid', key='key', name='name', description=null}, ceTask=CeTask{id='id', status=SUCCESS}, branch=Branch{main=true, name='name', type=SHORT}, qualityGate=EvaluatedQualityGate{qualityGate=QualityGate{id=id, name='name', conditions=[]}, status=WARN, evaluatedConditions=[]}, updatedAt=1, properties={a=b}, analysis=Analysis{uuid='analysis_uuid', date=1500}}");
   }
 }
diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ProjectTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ProjectTest.java
deleted file mode 100644 (file)
index 5db1229..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2018 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program 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.
- *
- * This program 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.webhook;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class ProjectTest {
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
-  private Project underTest = new Project("a", "b", "c");
-
-  @Test
-  public void constructor_throws_NPE_if_uuid_is_null() {
-    expectedException.expect(NullPointerException.class);
-    expectedException.expectMessage("uuid can't be null");
-
-    new Project(null, "b", "c");
-  }
-
-  @Test
-  public void constructor_throws_NPE_if_key_is_null() {
-    expectedException.expect(NullPointerException.class);
-    expectedException.expectMessage("key can't be null");
-
-    new Project("a", null, "c");
-  }
-
-  @Test
-  public void constructor_throws_NPE_if_name_is_null() {
-    expectedException.expect(NullPointerException.class);
-    expectedException.expectMessage("name can't be null");
-
-    new Project("a", "b", null);
-  }
-
-  @Test
-  public void verify_getters() {
-    assertThat(underTest.getUuid()).isEqualTo("a");
-    assertThat(underTest.getKey()).isEqualTo("b");
-    assertThat(underTest.getName()).isEqualTo("c");
-  }
-}
index be8df1f933e495306da660addac83e6a551b9f6b..a494b9a86e759b3eb66383b3b9adc6c29fc3bfc4 100644 (file)
@@ -27,6 +27,7 @@ import org.junit.Test;
 import org.sonar.api.measures.Metric;
 import org.sonar.api.platform.Server;
 import org.sonar.api.utils.System2;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.Condition;
 import org.sonar.server.qualitygate.EvaluatedCondition;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
index f748399122fb25711f24f82c3a7e895fffb00cd0..ca1adbb94d55f0733f0498911a86069389a63855 100644 (file)
@@ -49,6 +49,7 @@ import org.sonar.db.component.BranchType;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.SnapshotDto;
 import org.sonar.db.organization.OrganizationDto;
+import org.sonar.server.project.Project;
 import org.sonar.server.qualitygate.EvaluatedQualityGate;
 import org.sonar.server.qualitygate.changeevent.QGChangeEvent;
 import org.sonar.server.qualitygate.changeevent.QGChangeEventListener;