From 9b8f0177638e9aa41ea6f00e8a6c8ec0d48d6dcb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20B=C3=A9gaudeau?=
Date: Fri, 23 Feb 2024 10:19:22 +0100
Subject: [PATCH] [3156] Make Viewer a type instead of an interface in our
GraphQL API
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bug: https://github.com/eclipse-sirius/sirius-web/issues/3156
Signed-off-by: Stéphane Bégaudeau
---
CHANGELOG.adoc | 2 +
.../src/main/resources/schema/core.graphqls | 4 +-
.../ViewerEditingContextDataFetcher.java | 2 +-
.../controllers/ViewerProjectDataFetcher.java | 2 +-
.../ViewerProjectTemplatesDataFetcher.java | 2 +-
.../ViewerProjectsDataFetcher.java | 2 +-
.../dto/DeleteProjectSuccessPayload.java | 31 -----------
.../services/ProjectApplicationService.java | 4 +-
.../web/application/viewer/DefaultViewer.java | 21 --------
.../web/application/viewer/IViewer.java | 21 --------
...tcher.java => QueryViewerDataFetcher.java} | 8 ++-
.../main/resources/schema/siriusweb.graphqls | 18 +------
.../graphql/datafetchers/IViewerProvider.java | 28 ----------
.../MutationDeleteProjectDataFetcher.java | 29 +++--------
.../query/QueryViewerDataFetcher.java | 18 ++-----
.../ViewerEditingContextDataFetcher.java} | 10 ++--
.../ViewerProjectDataFetcher.java} | 10 ++--
.../ViewerProjectTemplatesDataFetcher.java} | 10 ++--
.../ViewerProjectsDataFetcher.java} | 8 +--
.../main/resources/schema/siriusweb.graphqls | 23 ++-------
.../web/sample/services/ViewerProvider.java | 37 --------------
.../projects/DeleteProjectSuccessPayload.java | 31 -----------
.../web/services/api/viewer/IViewer.java | 26 ----------
.../sirius/web/services/api/viewer/User.java | 51 -------------------
.../ProjectControllerIntegrationTests.java | 6 +--
.../modals/delete-project/useDeleteProject.ts | 2 +-
26 files changed, 51 insertions(+), 355 deletions(-)
delete mode 100644 packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/dto/DeleteProjectSuccessPayload.java
delete mode 100644 packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/DefaultViewer.java
delete mode 100644 packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/IViewer.java
rename packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/{QueryViewDataFetcher.java => QueryViewerDataFetcher.java} (74%)
delete mode 100644 packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/IViewerProvider.java
rename packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/{user/UserEditingContextDataFetcher.java => viewer/ViewerEditingContextDataFetcher.java} (86%)
rename packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/{user/UserProjectDataFetcher.java => viewer/ViewerProjectDataFetcher.java} (84%)
rename packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/{user/UserProjectTemplatesDataFetcher.java => viewer/ViewerProjectTemplatesDataFetcher.java} (91%)
rename packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/{user/UserProjectsDataFetcher.java => viewer/ViewerProjectsDataFetcher.java} (92%)
delete mode 100644 packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/services/ViewerProvider.java
delete mode 100644 packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/projects/DeleteProjectSuccessPayload.java
delete mode 100644 packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/IViewer.java
delete mode 100644 packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/User.java
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index 2102c6c01c..49ad0d969a 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -58,6 +58,8 @@ It's current location is only there to simplify the transition to the new Sirius
- https://github.com/eclipse-sirius/sirius-web/issues/3019[#3019] [emf] Remove the dependency from `sirius-components-emf` to the validation representation.
Reusing the EMF compatibility layer will not add any dependency to specific representations.
The EMF validation support will now be provided by `sirius-web-services`.
+- https://github.com/eclipse-sirius/sirius-web/issues/3156[#3156] [core] In our GraphQL schema, `Viewer` is now a type instead of an interface.
+Having `Viewer` as a type did not bring any additional value and it created some overhead by having to create and keep updated an additional type without any benefit.
=== Dependency update
diff --git a/packages/core/backend/sirius-components-collaborative/src/main/resources/schema/core.graphqls b/packages/core/backend/sirius-components-collaborative/src/main/resources/schema/core.graphqls
index 8f80075c54..66313f1b96 100644
--- a/packages/core/backend/sirius-components-collaborative/src/main/resources/schema/core.graphqls
+++ b/packages/core/backend/sirius-components-collaborative/src/main/resources/schema/core.graphqls
@@ -5,9 +5,7 @@ type Query {
viewer: Viewer!
}
-interface Viewer {
- id: ID!
- username: String!
+type Viewer {
editingContext(editingContextId: ID!): EditingContext
}
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/editingcontext/controllers/ViewerEditingContextDataFetcher.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/editingcontext/controllers/ViewerEditingContextDataFetcher.java
index 33cefec19a..2e71300268 100644
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/editingcontext/controllers/ViewerEditingContextDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/editingcontext/controllers/ViewerEditingContextDataFetcher.java
@@ -29,7 +29,7 @@
*
* @author sbegaudeau
*/
-@QueryDataFetcher(type = "DefaultViewer", field = "editingContext")
+@QueryDataFetcher(type = "Viewer", field = "editingContext")
public class ViewerEditingContextDataFetcher implements IDataFetcherWithFieldCoordinates> {
private static final String EDITING_CONTEXT_ID_ARGUMENT = "editingContextId";
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectDataFetcher.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectDataFetcher.java
index 79023f8eff..28b7391671 100644
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectDataFetcher.java
@@ -27,7 +27,7 @@
*
* @author sbegaudeau
*/
-@QueryDataFetcher(type = "DefaultViewer", field = "project")
+@QueryDataFetcher(type = "Viewer", field = "project")
public class ViewerProjectDataFetcher implements IDataFetcherWithFieldCoordinates {
private static final String PROJECT_ID_ARGUMENT = "projectId";
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectTemplatesDataFetcher.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectTemplatesDataFetcher.java
index 7199fba4cc..845ee938d5 100644
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectTemplatesDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectTemplatesDataFetcher.java
@@ -37,7 +37,7 @@
*
* @author sbegaudeau
*/
-@QueryDataFetcher(type = "DefaultViewer", field = "projectTemplates")
+@QueryDataFetcher(type = "Viewer", field = "projectTemplates")
public class ViewerProjectTemplatesDataFetcher implements IDataFetcherWithFieldCoordinates> {
private static final String PAGE_ARGUMENT = "page";
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectsDataFetcher.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectsDataFetcher.java
index 57656b22cf..33e14b6d7d 100644
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectsDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/controllers/ViewerProjectsDataFetcher.java
@@ -37,7 +37,7 @@
*
* @author sbegaudeau
*/
-@QueryDataFetcher(type = "DefaultViewer", field = "projects")
+@QueryDataFetcher(type = "Viewer", field = "projects")
public class ViewerProjectsDataFetcher implements IDataFetcherWithFieldCoordinates> {
private static final String PAGE_ARGUMENT = "page";
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/dto/DeleteProjectSuccessPayload.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/dto/DeleteProjectSuccessPayload.java
deleted file mode 100644
index f82fde9ff9..0000000000
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/dto/DeleteProjectSuccessPayload.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.application.project.dto;
-
-import java.util.Objects;
-import java.util.UUID;
-
-import org.eclipse.sirius.components.core.api.IPayload;
-
-import jakarta.validation.constraints.NotNull;
-
-/**
- * Payload sent when a project is deleted.
- *
- * @author sbegaudeau
- */
-public record DeleteProjectSuccessPayload(@NotNull UUID id) implements IPayload {
- public DeleteProjectSuccessPayload {
- Objects.requireNonNull(id);
- }
-}
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/services/ProjectApplicationService.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/services/ProjectApplicationService.java
index 7489be14b7..4e21fbdb26 100644
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/services/ProjectApplicationService.java
+++ b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/project/services/ProjectApplicationService.java
@@ -18,10 +18,10 @@
import org.eclipse.sirius.components.core.api.ErrorPayload;
import org.eclipse.sirius.components.core.api.IPayload;
+import org.eclipse.sirius.components.core.api.SuccessPayload;
import org.eclipse.sirius.web.application.project.dto.CreateProjectInput;
import org.eclipse.sirius.web.application.project.dto.CreateProjectSuccessPayload;
import org.eclipse.sirius.web.application.project.dto.DeleteProjectInput;
-import org.eclipse.sirius.web.application.project.dto.DeleteProjectSuccessPayload;
import org.eclipse.sirius.web.application.project.dto.ProjectDTO;
import org.eclipse.sirius.web.application.project.dto.RenameProjectInput;
import org.eclipse.sirius.web.application.project.dto.RenameProjectSuccessPayload;
@@ -113,7 +113,7 @@ public IPayload deleteProject(DeleteProjectInput input) {
if (result instanceof Failure failure) {
payload = new ErrorPayload(input.id(), failure.message());
} else if (result instanceof Success) {
- payload = new DeleteProjectSuccessPayload(input.id());
+ payload = new SuccessPayload(input.id());
}
return payload;
}
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/DefaultViewer.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/DefaultViewer.java
deleted file mode 100644
index a84f36e175..0000000000
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/DefaultViewer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.application.viewer;
-
-/**
- * The viewer DTO.
- *
- * @author sbegaudeau
- */
-public record DefaultViewer() implements IViewer {
-}
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/IViewer.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/IViewer.java
deleted file mode 100644
index c6ac3a1322..0000000000
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/IViewer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2024 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.application.viewer;
-
-/**
- * Interface used to represent a viewer.
- *
- * @author gcoutable
- */
-public interface IViewer {
-}
diff --git a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/QueryViewDataFetcher.java b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/QueryViewerDataFetcher.java
similarity index 74%
rename from packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/QueryViewDataFetcher.java
rename to packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/QueryViewerDataFetcher.java
index d4cba7958d..a572642a84 100644
--- a/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/QueryViewDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-application/src/main/java/org/eclipse/sirius/web/application/viewer/controllers/QueryViewerDataFetcher.java
@@ -14,8 +14,6 @@
import org.eclipse.sirius.components.annotations.spring.graphql.QueryDataFetcher;
import org.eclipse.sirius.components.graphql.api.IDataFetcherWithFieldCoordinates;
-import org.eclipse.sirius.web.application.viewer.IViewer;
-import org.eclipse.sirius.web.application.viewer.DefaultViewer;
import graphql.schema.DataFetchingEnvironment;
@@ -25,9 +23,9 @@
* @author sbegaudeau
*/
@QueryDataFetcher(type = "Query", field = "viewer")
-public class QueryViewDataFetcher implements IDataFetcherWithFieldCoordinates {
+public class QueryViewerDataFetcher implements IDataFetcherWithFieldCoordinates
*
*
- * type User {
+ * type Viewer {
* editingContext(editingContextId: ID!): EditingContext
* }
*
*
* @author sbegaudeau
*/
-@QueryDataFetcher(type = "User", field = "editingContext")
-public class UserEditingContextDataFetcher implements IDataFetcherWithFieldCoordinates> {
+@QueryDataFetcher(type = "Viewer", field = "editingContext")
+public class ViewerEditingContextDataFetcher implements IDataFetcherWithFieldCoordinates> {
private static final String EDITING_CONTEXT_ID_ARGUMENT = "editingContextId";
@Override
diff --git a/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectDataFetcher.java b/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectDataFetcher.java
similarity index 84%
rename from packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectDataFetcher.java
rename to packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectDataFetcher.java
index c613eaf53c..03feb73e4f 100644
--- a/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectDataFetcher.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019, 2023 Obeo.
+ * Copyright (c) 2019, 2024 Obeo.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.web.graphql.datafetchers.user;
+package org.eclipse.sirius.web.graphql.datafetchers.viewer;
import java.util.Objects;
@@ -36,14 +36,14 @@
*
* @author sbegaudeau
*/
-@QueryDataFetcher(type = "User", field = "project")
-public class UserProjectDataFetcher implements IDataFetcherWithFieldCoordinates {
+@QueryDataFetcher(type = "Viewer", field = "project")
+public class ViewerProjectDataFetcher implements IDataFetcherWithFieldCoordinates {
private static final String PROJECT_ID_ARGUMENT = "projectId";
private final IProjectService projectService;
- public UserProjectDataFetcher(IProjectService projectService) {
+ public ViewerProjectDataFetcher(IProjectService projectService) {
this.projectService = Objects.requireNonNull(projectService);
}
diff --git a/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectTemplatesDataFetcher.java b/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectTemplatesDataFetcher.java
similarity index 91%
rename from packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectTemplatesDataFetcher.java
rename to packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectTemplatesDataFetcher.java
index f579adb41a..571c17eb72 100644
--- a/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectTemplatesDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectTemplatesDataFetcher.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2023 Obeo.
+ * Copyright (c) 2023, 2024 Obeo.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.web.graphql.datafetchers.user;
+package org.eclipse.sirius.web.graphql.datafetchers.viewer;
import java.util.Comparator;
import java.util.List;
@@ -39,15 +39,15 @@
*
* @author pcdavid
*/
-@QueryDataFetcher(type = "User", field = "projectTemplates")
-public class UserProjectTemplatesDataFetcher implements IDataFetcherWithFieldCoordinates> {
+@QueryDataFetcher(type = "Viewer", field = "projectTemplates")
+public class ViewerProjectTemplatesDataFetcher implements IDataFetcherWithFieldCoordinates> {
private static final String PAGE_ARGUMENT = "page";
private static final String LIMIT_ARGUMENT = "limit";
private final List projectTemplateProviders;
- public UserProjectTemplatesDataFetcher(List projectTemplateProviders) {
+ public ViewerProjectTemplatesDataFetcher(List projectTemplateProviders) {
this.projectTemplateProviders = Objects.requireNonNull(projectTemplateProviders);
}
diff --git a/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectsDataFetcher.java b/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectsDataFetcher.java
similarity index 92%
rename from packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectsDataFetcher.java
rename to packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectsDataFetcher.java
index 64f77c4aac..549c5eb3be 100644
--- a/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/user/UserProjectsDataFetcher.java
+++ b/packages/sirius-web/backend/sirius-web-graphql/src/main/java/org/eclipse/sirius/web/graphql/datafetchers/viewer/ViewerProjectsDataFetcher.java
@@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.sirius.web.graphql.datafetchers.user;
+package org.eclipse.sirius.web.graphql.datafetchers.viewer;
import java.util.List;
import java.util.Objects;
@@ -47,8 +47,8 @@
*
* @author pcdavid
*/
-@QueryDataFetcher(type = "User", field = "projects")
-public class UserProjectsDataFetcher implements IDataFetcherWithFieldCoordinates> {
+@QueryDataFetcher(type = "Viewer", field = "projects")
+public class ViewerProjectsDataFetcher implements IDataFetcherWithFieldCoordinates> {
private static final String PAGE_ARGUMENT = "page";
@@ -56,7 +56,7 @@ public class UserProjectsDataFetcher implements IDataFetcherWithFieldCoordinates
private final IProjectService projectService;
- public UserProjectsDataFetcher(IProjectService projectService) {
+ public ViewerProjectsDataFetcher(IProjectService projectService) {
this.projectService = Objects.requireNonNull(projectService);
}
diff --git a/packages/sirius-web/backend/sirius-web-graphql/src/main/resources/schema/siriusweb.graphqls b/packages/sirius-web/backend/sirius-web-graphql/src/main/resources/schema/siriusweb.graphqls
index bbfb779837..0928306842 100644
--- a/packages/sirius-web/backend/sirius-web-graphql/src/main/resources/schema/siriusweb.graphqls
+++ b/packages/sirius-web/backend/sirius-web-graphql/src/main/resources/schema/siriusweb.graphqls
@@ -1,6 +1,7 @@
-extend interface Viewer {
+extend type Viewer {
project(projectId: ID!): Project
projects(page: Int!, limit: Int!): ViewerProjectConnection!
+ projectTemplates(page: Int!, limit: Int!): ViewerProjectTemplateConnection!
}
type ViewerProjectConnection {
@@ -48,10 +49,6 @@ type ProjectTemplate {
imageURL: String!
}
-extend interface Viewer {
- projectTemplates(page: Int!, limit: Int!): ViewerProjectTemplateConnection!
-}
-
type ViewerProjectTemplateConnection {
edges: [ViewerProjectTemplateEdge!]!
pageInfo: PageInfo!
@@ -61,15 +58,6 @@ type ViewerProjectTemplateEdge {
node: ProjectTemplate!
}
-type User implements Viewer {
- id: ID!
- username: String!
- editingContext(editingContextId: ID!): EditingContext
- project(projectId: ID!): Project
- projects(page: Int!, limit: Int!): ViewerProjectConnection!
- projectTemplates(page: Int!, limit: Int!): ViewerProjectTemplateConnection!
-}
-
extend type Mutation {
createProject(input: CreateProjectInput!): CreateProjectPayload!
createProjectFromTemplate(input: CreateProjectFromTemplateInput!): CreateProjectFromTemplatePayload!
@@ -118,12 +106,7 @@ input DeleteProjectInput {
projectId: ID!
}
-union DeleteProjectPayload = ErrorPayload | DeleteProjectSuccessPayload
-
-type DeleteProjectSuccessPayload {
- id: ID!
- viewer: Viewer!
-}
+union DeleteProjectPayload = ErrorPayload | SuccessPayload
input RenameProjectInput {
id: ID!
diff --git a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/services/ViewerProvider.java b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/services/ViewerProvider.java
deleted file mode 100644
index 46f3e958f4..0000000000
--- a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/services/ViewerProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2022 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.sample.services;
-
-import java.util.Optional;
-import java.util.UUID;
-
-import org.eclipse.sirius.web.graphql.datafetchers.IViewerProvider;
-import org.eclipse.sirius.web.services.api.viewer.IViewer;
-import org.eclipse.sirius.web.services.api.viewer.User;
-import org.springframework.stereotype.Service;
-
-import graphql.schema.DataFetchingEnvironment;
-
-/**
- * Service used to retrieve the current viewer.
- *
- * @author sbegaudeau
- */
-@Service
-public class ViewerProvider implements IViewerProvider {
- @Override
- public Optional getViewer(DataFetchingEnvironment environment) {
- return Optional.of(new User(UUID.randomUUID(), "system"));
- }
-
-}
diff --git a/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/projects/DeleteProjectSuccessPayload.java b/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/projects/DeleteProjectSuccessPayload.java
deleted file mode 100644
index 9b04130a69..0000000000
--- a/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/projects/DeleteProjectSuccessPayload.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2023 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.services.api.projects;
-
-import java.util.Objects;
-import java.util.UUID;
-
-import org.eclipse.sirius.components.core.api.IPayload;
-import org.eclipse.sirius.web.services.api.viewer.IViewer;
-
-/**
- * Represent the result returned when deleting a project through the graphql API.
- *
- * @author fbarbin
- */
-public record DeleteProjectSuccessPayload(UUID id, IViewer viewer) implements IPayload {
- public DeleteProjectSuccessPayload {
- Objects.requireNonNull(id);
- Objects.requireNonNull(viewer);
- }
-}
diff --git a/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/IViewer.java b/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/IViewer.java
deleted file mode 100644
index ec22b42c12..0000000000
--- a/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/IViewer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2022 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.services.api.viewer;
-
-import java.util.UUID;
-
-/**
- * Interface used to represent a viewer.
- *
- * @author gcoutable
- */
-public interface IViewer {
- UUID getId();
-
- String getUsername();
-}
diff --git a/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/User.java b/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/User.java
deleted file mode 100644
index 5a3a088b60..0000000000
--- a/packages/sirius-web/backend/sirius-web-services-api/src/main/java/org/eclipse/sirius/web/services/api/viewer/User.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019, 2022 Obeo.
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.web.services.api.viewer;
-
-import java.text.MessageFormat;
-import java.util.UUID;
-
-/**
- * Class used to represent a user.
- *
- * @author gcoutable
- */
-public class User implements IViewer {
-
- private UUID id;
-
- private String username;
-
- public User(UUID id, String username) {
- this.id = id;
- this.username = username;
-
- }
-
- @Override
- public UUID getId() {
- return this.id;
- }
-
- @Override
- public String getUsername() {
- return this.username;
- }
-
- @Override
- public String toString() {
- String pattern = "{0} '{'id: {1}, username: {2}'}'";
- return MessageFormat.format(pattern, this.getClass().getSimpleName(), this.id, this.username);
- }
-
-}
diff --git a/packages/sirius-web/backend/sirius-web/src/test/java/org/eclipse/sirius/web/application/controllers/ProjectControllerIntegrationTests.java b/packages/sirius-web/backend/sirius-web/src/test/java/org/eclipse/sirius/web/application/controllers/ProjectControllerIntegrationTests.java
index 52118e792d..28868780e4 100644
--- a/packages/sirius-web/backend/sirius-web/src/test/java/org/eclipse/sirius/web/application/controllers/ProjectControllerIntegrationTests.java
+++ b/packages/sirius-web/backend/sirius-web/src/test/java/org/eclipse/sirius/web/application/controllers/ProjectControllerIntegrationTests.java
@@ -22,12 +22,12 @@
import java.util.UUID;
import org.eclipse.sirius.components.core.api.ErrorPayload;
+import org.eclipse.sirius.components.core.api.SuccessPayload;
import org.eclipse.sirius.web.AbstractIntegrationTests;
import org.eclipse.sirius.web.TestIdentifiers;
import org.eclipse.sirius.web.application.project.dto.CreateProjectInput;
import org.eclipse.sirius.web.application.project.dto.CreateProjectSuccessPayload;
import org.eclipse.sirius.web.application.project.dto.DeleteProjectInput;
-import org.eclipse.sirius.web.application.project.dto.DeleteProjectSuccessPayload;
import org.eclipse.sirius.web.application.project.dto.ProjectEventInput;
import org.eclipse.sirius.web.application.project.dto.ProjectRenamedEventPayload;
import org.eclipse.sirius.web.application.project.dto.RenameProjectInput;
@@ -233,7 +233,7 @@ public void givenExistingProjectToDeleteWhenMutationIsPerformedThenProjectIsDele
var input = new DeleteProjectInput(UUID.randomUUID(), TestIdentifiers.UML_SAMPLE_PROJECT);
var result = this.graphQLRequestor.execute(DELETE_PROJECT_MUTATION, input);
String typename = JsonPath.read(result, "$.data.deleteProject.__typename");
- assertThat(typename).isEqualTo(DeleteProjectSuccessPayload.class.getSimpleName());
+ assertThat(typename).isEqualTo(SuccessPayload.class.getSimpleName());
assertThat(this.projectSearchService.existsById(TestIdentifiers.UML_SAMPLE_PROJECT)).isFalse();
@@ -314,7 +314,7 @@ public void givenProjectWhenTheProjectIsDeletedThenTheProjectEventIsCompleted()
Runnable deleteProjectTask = () -> {
var result = this.graphQLRequestor.execute(DELETE_PROJECT_MUTATION, input);
String typename = JsonPath.read(result, "$.data.deleteProject.__typename");
- assertThat(typename).isEqualTo(DeleteProjectSuccessPayload.class.getSimpleName());
+ assertThat(typename).isEqualTo(SuccessPayload.class.getSimpleName());
TestTransaction.flagForCommit();
TestTransaction.end();
diff --git a/packages/sirius-web/frontend/sirius-web-application/src/modals/delete-project/useDeleteProject.ts b/packages/sirius-web/frontend/sirius-web-application/src/modals/delete-project/useDeleteProject.ts
index 1a3d513036..58056f77fa 100644
--- a/packages/sirius-web/frontend/sirius-web-application/src/modals/delete-project/useDeleteProject.ts
+++ b/packages/sirius-web/frontend/sirius-web-application/src/modals/delete-project/useDeleteProject.ts
@@ -65,7 +65,7 @@ export const useDeleteProject = (): UseDeleteProjectValue => {
performProjectDeletion({ variables });
};
- const projectDeleted: boolean = data?.deleteProject.__typename === 'DeleteProjectSuccessPayload';
+ const projectDeleted: boolean = data?.deleteProject.__typename === 'SuccessPayload';
return {
deleteProject,