]> source.dussan.org Git - sonarqube.git/commitdiff
Improve WsGroup and WsProject contracts
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Mon, 31 Aug 2015 07:10:49 +0000 (09:10 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Wed, 2 Sep 2015 14:36:18 +0000 (16:36 +0200)
server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupToTemplateAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionRequest.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupFromTemplateAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/SearchProjectPermissionsDataLoader.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsGroup.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsGroupRef.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsProject.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsProjectRef.java [new file with mode: 0644]

index e7f019177315d3f14a14a6ffad5ed34d9679b9c2..658f9fb555b143928f538db2b1cb83646d686dfc 100644 (file)
@@ -77,7 +77,7 @@ public class AddGroupToTemplateAction implements PermissionsWsAction {
 
     String templateKey = wsRequest.mandatoryParam(PARAM_LONG_TEMPLATE_ID);
     String permission = wsRequest.mandatoryParam(PARAM_PERMISSION);
-    WsGroup group = WsGroup.fromRequest(wsRequest);
+    WsGroupRef group = WsGroupRef.fromRequest(wsRequest);
 
     DbSession dbSession = dbClient.openSession(false);
     try {
index dcd4d66dbb3cc5398365c9d931b95c1ccd1ba680..9c78a4e4d091130d1f6e75fe2fa24ba0b563634b 100644 (file)
@@ -52,8 +52,8 @@ public class PermissionDependenciesFinder {
       return Optional.absent();
     }
 
-    WsProject wsProject = request.project().get();
-    return Optional.of(componentFinder.getProjectByUuidOrKey(dbSession, wsProject.uuid(), wsProject.key()));
+    WsProjectRef wsProjectRef = request.project().get();
+    return Optional.of(componentFinder.getProjectByUuidOrKey(dbSession, wsProjectRef.uuid(), wsProjectRef.key()));
   }
 
   String getGroupName(DbSession dbSession, PermissionRequest request) {
@@ -67,7 +67,7 @@ public class PermissionDependenciesFinder {
    * @return null if it's the anyone group
    */
   @CheckForNull
-  GroupDto getGroup(DbSession dbSession, WsGroup group) {
+  GroupDto getGroup(DbSession dbSession, WsGroupRef group) {
     Long groupId = group.id();
     String groupName = group.name();
 
index 78c1d52b6ac60fbeff1017203290bd1bb61fc783..05336525510c95e4673a5602e156fc964b8a4241 100644 (file)
@@ -36,8 +36,8 @@ import static org.sonar.server.permission.ws.Parameters.PARAM_USER_LOGIN;
 class PermissionRequest {
   private final String permission;
   private final String userLogin;
-  private final WsGroup group;
-  private final Optional<WsProject> project;
+  private final WsGroupRef group;
+  private final Optional<WsProjectRef> project;
   private final Integer page;
   private final Integer pageSize;
   private final String selected;
@@ -65,8 +65,8 @@ class PermissionRequest {
     private String permission;
     private String userLogin;
 
-    private WsGroup group;
-    private Optional<WsProject> project;
+    private WsGroupRef group;
+    private Optional<WsProjectRef> project;
     private Integer page;
     private Integer pageSize;
     private String selected;
@@ -134,12 +134,12 @@ class PermissionRequest {
 
     private void setGroup(Request request) {
       if (withGroup) {
-        this.group = WsGroup.fromRequest(request);
+        this.group = WsGroupRef.fromRequest(request);
       }
     }
 
     private void setProject(Request request) {
-      this.project = WsProject.fromRequest(request);
+      this.project = WsProjectRef.fromRequest(request);
     }
 
     private void checkPermissionParameter() {
@@ -159,11 +159,11 @@ class PermissionRequest {
     return userLogin;
   }
 
-  WsGroup group() {
+  WsGroupRef group() {
     return group;
   }
 
-  Optional<WsProject> project() {
+  Optional<WsProjectRef> project() {
     return project;
   }
 
index cb80d6fbf22bf1c638a9df019d20b4cfd2b0b801..4beea58427f9252490a4bfd9ba884328593723be 100644 (file)
@@ -72,7 +72,7 @@ public class RemoveGroupFromTemplateAction implements PermissionsWsAction {
 
     String templateKey = wsRequest.mandatoryParam(PARAM_LONG_TEMPLATE_ID);
     String permission = wsRequest.mandatoryParam(PARAM_PERMISSION);
-    WsGroup group = WsGroup.fromRequest(wsRequest);
+    WsGroupRef group = WsGroupRef.fromRequest(wsRequest);
 
     DbSession dbSession = dbClient.openSession(false);
     try {
index 8ef5228a5e2e86ffda9f1328930c2e0e07378159..58a4126ed89f59c95ae61fd5f63d1c6d29148fa8 100644 (file)
@@ -89,7 +89,7 @@ public class SearchProjectPermissionsAction implements PermissionsWsAction {
   }
 
   private void checkRequestAndPermissions(Request wsRequest) {
-    Optional<WsProject> project = WsProject.fromRequest(wsRequest);
+    Optional<WsProjectRef> project = WsProjectRef.fromRequest(wsRequest);
     boolean hasProject = project.isPresent();
     boolean hasProjectUuid = hasProject && project.get().uuid() != null;
     boolean hasProjectKey = hasProject && project.get().key() != null;
index 1326164704b3875ddd4aaf268d9aa10af7f008e6..fa2e5949359171a4e6ac8559500bb51ef8dbffff 100644 (file)
@@ -90,7 +90,7 @@ public class SearchProjectPermissionsDataLoader {
 
   private List<ComponentDto> searchRootComponents(DbSession dbSession, Request wsRequest, Paging paging) {
     String query = wsRequest.param(TEXT_QUERY);
-    Optional<WsProject> project = WsProject.fromRequest(wsRequest);
+    Optional<WsProjectRef> project = WsProjectRef.fromRequest(wsRequest);
 
     if (project.isPresent()) {
       return singletonList(componentFinder.getProjectByUuidOrKey(dbSession, project.get().uuid(), project.get().key()));
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsGroup.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsGroup.java
deleted file mode 100644 (file)
index 66fd8a7..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 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.permission.ws;
-
-import javax.annotation.Nullable;
-import org.sonar.api.server.ws.Request;
-
-import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_ID;
-import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_NAME;
-import static org.sonar.server.ws.WsUtils.checkRequest;
-
-/**
- * Group from a WS request. Guaranties the group id or the group name is provided, not both.
- */
-class WsGroup {
-
-  private final Long id;
-  private final String name;
-
-  private WsGroup(Long id, String name) {
-    checkRequest(id != null ^ name != null, "Group name or group id must be provided, not both.");
-
-    this.id = id;
-    this.name = name;
-  }
-
-  static WsGroup fromRequest(Request wsRequest) {
-    Long id = wsRequest.paramAsLong(PARAM_GROUP_ID);
-    String name = wsRequest.param(PARAM_GROUP_NAME);
-
-    return new WsGroup(id, name);
-  }
-
-  @Nullable
-  Long id() {
-    return this.id;
-  }
-
-  @Nullable
-  String name() {
-    return this.name;
-  }
-}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsGroupRef.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsGroupRef.java
new file mode 100644 (file)
index 0000000..f015d39
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 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.permission.ws;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
+import org.sonar.api.server.ws.Request;
+
+import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_ID;
+import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_NAME;
+import static org.sonar.server.ws.WsUtils.checkRequest;
+
+/**
+ * Group from a WS request. Guaranties the group id or the group name is provided, not both.
+ */
+class WsGroupRef {
+
+  private final Long id;
+  private final String name;
+
+  private WsGroupRef(@Nullable Long id, @Nullable String name) {
+    checkRequest(id != null ^ name != null, "Group name or group id must be provided, not both.");
+
+    this.id = id;
+    this.name = name;
+  }
+
+  static WsGroupRef fromRequest(Request wsRequest) {
+    Long id = wsRequest.paramAsLong(PARAM_GROUP_ID);
+    String name = wsRequest.param(PARAM_GROUP_NAME);
+
+    return new WsGroupRef(id, name);
+  }
+
+  @CheckForNull
+  Long id() {
+    return this.id;
+  }
+
+  @CheckForNull
+  String name() {
+    return this.name;
+  }
+}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsProject.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsProject.java
deleted file mode 100644 (file)
index 5589231..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 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.permission.ws;
-
-import com.google.common.base.Optional;
-import javax.annotation.Nullable;
-import org.sonar.api.server.ws.Request;
-
-import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_KEY;
-import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_UUID;
-import static org.sonar.server.ws.WsUtils.checkRequest;
-
-/**
- * Project identifiers from a WS request. Guaranties the project id and project key are not provided at the same time.
- */
-class WsProject {
-  private final String uuid;
-  private final String key;
-
-  private WsProject(String uuid, String key) {
-    checkRequest(uuid != null ^ key != null, "Project id or project key can be provided, not both.");
-
-    this.uuid = uuid;
-    this.key = key;
-  }
-
-  static Optional<WsProject> fromRequest(Request wsRequest) {
-    if (hasNoProjectParam(wsRequest)) {
-      return Optional.absent();
-    }
-
-    return Optional.of(new WsProject(
-      wsRequest.param(PARAM_PROJECT_UUID),
-      wsRequest.param(PARAM_PROJECT_KEY))
-      );
-  }
-
-  @Nullable
-  String uuid() {
-    return this.uuid;
-  }
-
-  @Nullable
-  String key() {
-    return this.key;
-  }
-
-  private static boolean hasNoProjectParam(Request wsRequest) {
-    return !wsRequest.hasParam(PARAM_PROJECT_UUID) && !wsRequest.hasParam(PARAM_PROJECT_KEY);
-  }
-}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsProjectRef.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/WsProjectRef.java
new file mode 100644 (file)
index 0000000..1f88281
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 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.permission.ws;
+
+import com.google.common.base.Optional;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
+import org.sonar.api.server.ws.Request;
+
+import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_KEY;
+import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_UUID;
+import static org.sonar.server.ws.WsUtils.checkRequest;
+
+/**
+ * Project identifiers from a WS request. Guaranties the project id and project key are not provided at the same time.
+ */
+class WsProjectRef {
+  private final String uuid;
+  private final String key;
+
+  private WsProjectRef(@Nullable String uuid, @Nullable String key) {
+    checkRequest(uuid != null ^ key != null, "Project id or project key can be provided, not both.");
+
+    this.uuid = uuid;
+    this.key = key;
+  }
+
+  static Optional<WsProjectRef> fromRequest(Request wsRequest) {
+    if (hasNoProjectParam(wsRequest)) {
+      return Optional.absent();
+    }
+
+    return Optional.of(new WsProjectRef(
+      wsRequest.param(PARAM_PROJECT_UUID),
+      wsRequest.param(PARAM_PROJECT_KEY))
+      );
+  }
+
+  @CheckForNull
+  String uuid() {
+    return this.uuid;
+  }
+
+  @CheckForNull
+  String key() {
+    return this.key;
+  }
+
+  private static boolean hasNoProjectParam(Request wsRequest) {
+    return !wsRequest.hasParam(PARAM_PROJECT_UUID) && !wsRequest.hasParam(PARAM_PROJECT_KEY);
+  }
+}