]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-21121 Add PATCH /dop-translation/gitlab-configurations/
authorAurelien Poscia <aurelien.poscia@sonarsource.com>
Fri, 8 Dec 2023 12:35:05 +0000 (13:35 +0100)
committersonartech <sonartech@sonarsource.com>
Fri, 22 Dec 2023 20:03:02 +0000 (20:03 +0000)
server/sonar-webserver-common/src/main/java/org/sonar/server/common/NonNullUpdatedValue.java [new file with mode: 0644]
server/sonar-webserver-common/src/main/java/org/sonar/server/common/UpdatedValue.java [new file with mode: 0644]
server/sonar-webserver-webapi-v2/src/main/java/org/sonar/server/v2/api/controller/Searchable.java
server/sonar-webserver-webapi-v2/src/main/java/org/sonar/server/v2/common/model/UpdateField.java

diff --git a/server/sonar-webserver-common/src/main/java/org/sonar/server/common/NonNullUpdatedValue.java b/server/sonar-webserver-common/src/main/java/org/sonar/server/common/NonNullUpdatedValue.java
new file mode 100644 (file)
index 0000000..025426a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * 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.server.common;
+
+import javax.annotation.Nullable;
+
+import static org.sonar.api.utils.Preconditions.checkArgument;
+
+public class NonNullUpdatedValue<T> extends UpdatedValue<T> {
+
+  private NonNullUpdatedValue(@Nullable T value, boolean isDefined) {
+    super(value, isDefined);
+  }
+
+  public static <T> NonNullUpdatedValue<T> withValueOrThrow(@Nullable T value) {
+    checkArgument(value != null, "Value must not be null");
+    return new NonNullUpdatedValue<>(value, true);
+  }
+
+  public static <T> NonNullUpdatedValue<T> undefined() {
+    return new NonNullUpdatedValue<>(null, false);
+  }
+
+}
diff --git a/server/sonar-webserver-common/src/main/java/org/sonar/server/common/UpdatedValue.java b/server/sonar-webserver-common/src/main/java/org/sonar/server/common/UpdatedValue.java
new file mode 100644 (file)
index 0000000..7941773
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * 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.server.common;
+
+import java.util.Objects;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import javax.annotation.Nullable;
+
+public class UpdatedValue<T> {
+  final T value;
+  final boolean isDefined;
+
+  UpdatedValue(@Nullable T value, boolean isDefined) {
+    this.value = value;
+    this.isDefined = isDefined;
+  }
+
+  public static <T> UpdatedValue<T> withValue(@Nullable T value) {
+    return new UpdatedValue<>(value, true);
+  }
+
+  public static <T> UpdatedValue<T> undefined() {
+    return new UpdatedValue<>(null, false);
+  }
+
+  public <U> UpdatedValue<U> map(Function<T, U> mappingFunction) {
+    if (isDefined) {
+      return withValue(mappingFunction.apply(value));
+    }
+    return undefined();
+  }
+
+  public void applyIfDefined(Consumer<T> consumer) {
+    if (isDefined) {
+      consumer.accept(value);
+    }
+  }
+
+  public boolean contains(T testValue) {
+    if (isDefined && value != null) {
+      return value.equals(testValue);
+    }
+    return false;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    UpdatedValue<?> that = (UpdatedValue<?>) o;
+    return isDefined == that.isDefined && Objects.equals(value, that.value);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(value, isDefined);
+  }
+}
index 79b6f5d16bc17ba18bafa18c1f43844ab525d062..fd096fa45798e5113022f4f285f878b223d4c2e5 100644 (file)
@@ -27,6 +27,6 @@ import org.springdoc.api.annotations.ParameterObject;
 
 public interface Searchable<T, U extends RestSearchRequest> {
 
-  RestSearchResponse<T> search(@Valid @ParameterObject U searchRequest, @Valid @ParameterObject RestPage restPage);
+  RestSearchResponse<T> searchGitlabConfiguration(@Valid @ParameterObject U searchRequest, @Valid @ParameterObject RestPage restPage);
 
 }
index 49a80e3eb40df7c1aab194d66e54a3581bab1e90..97919bc1d093dee1d7792e02b2f721d8ddabade1 100644 (file)
@@ -24,6 +24,8 @@ import java.util.function.Function;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import javax.validation.valueextraction.UnwrapByDefault;
+import org.sonar.server.common.NonNullUpdatedValue;
+import org.sonar.server.common.UpdatedValue;
 
 @UnwrapByDefault
 public class UpdateField<T> {
@@ -66,6 +68,13 @@ public class UpdateField<T> {
     return undefined();
   }
 
+  public UpdatedValue<T> toUpdatedValue() {
+    return isDefined ? UpdatedValue.withValue(value) : UpdatedValue.undefined();
+  }
+  public NonNullUpdatedValue<T> toNonNullUpdatedValue() {
+    return isDefined ? NonNullUpdatedValue.withValueOrThrow(value) : NonNullUpdatedValue.undefined();
+  }
+
   @CheckForNull
   public T orElse(@Nullable T other) {
     return isDefined ? value : other;