]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-18662 Improve performance of group membership updates
authorAurelien Poscia <aurelien.poscia@sonarsource.com>
Thu, 16 Mar 2023 13:13:09 +0000 (14:13 +0100)
committersonartech <sonartech@sonarsource.com>
Wed, 22 Mar 2023 20:04:08 +0000 (20:04 +0000)
server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserDto.java
server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDtoTest.java [new file with mode: 0644]

index f822b37bf559fff202076f55ec27315c03a80d86..7c2d7807a8bcd347bbaa384ffad0c227b63deb3e 100644 (file)
@@ -19,6 +19,8 @@
  */
 package org.sonar.db.scim;
 
+import java.util.Objects;
+
 public class ScimUserDto {
 
   private final String scimUserUuid;
@@ -38,4 +40,20 @@ public class ScimUserDto {
     return userUuid;
   }
 
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    ScimUserDto that = (ScimUserDto) o;
+    return Objects.equals(scimUserUuid, that.scimUserUuid) && Objects.equals(userUuid, that.userUuid);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(scimUserUuid, userUuid);
+  }
 }
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDtoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDtoTest.java
new file mode 100644 (file)
index 0000000..fdb5122
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2023 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.db.scim;
+
+import com.tngtech.java.junit.dataprovider.DataProvider;
+import com.tngtech.java.junit.dataprovider.DataProviderRunner;
+import com.tngtech.java.junit.dataprovider.UseDataProvider;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@RunWith(DataProviderRunner.class)
+public class ScimUserDtoTest {
+
+
+  @DataProvider
+  public static Object[][] testEqualsParameters() {
+    return new Object[][] {
+      {new ScimUserDto("uuidA", "userIdA"), new ScimUserDto("uuidA", "userIdA"), true},
+      {new ScimUserDto("uuidA", "userIdA"), new ScimUserDto("uuidA", "userIdB"), false},
+      {new ScimUserDto("uuidA", "userIdA"), new ScimUserDto("uuidB", "userIdA"), false},
+      {new ScimUserDto("uuidA", "userIdA"), new ScimUserDto("uuidB", "userIdB"), false},
+    };
+  }
+
+  @Test
+  @UseDataProvider("testEqualsParameters")
+  public void testEquals(ScimUserDto scimUserDtoA, ScimUserDto scimUserDtoB, boolean expectedResult) {
+    assertThat(scimUserDtoA.equals(scimUserDtoB)).isEqualTo(expectedResult);
+  }
+}