Invoke the service method when using ProjectInitializationAction The Java class ProjectInitializationAction, which extends HttpServlet, now utilizes the HttpServlet API's service method within the context of the PullReplicationFilter, replacing the previous usage of the initProject method. The objective of this modification is to encapsulate the 'init project' use case within the prescribed pattern: Request -> PullReplicationFilter -> ProjectInitializationAction. In this pattern, the filter's sole responsibility is to intercept, process the request, and forward it to ProjectInitializationAction, where the core logic is implemented in accordance with the HttpServlet engine conventions. Change-Id: I6e3c25216489d71241e1563eee219976fdfaca1c
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java index ca90c02..6fd3cdb 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java
@@ -16,7 +16,6 @@ import static com.google.gerrit.httpd.restapi.RestApiServlet.SC_UNPROCESSABLE_ENTITY; import static com.googlesource.gerrit.plugins.replication.pull.api.HttpServletOps.checkAcceptHeader; -import static com.googlesource.gerrit.plugins.replication.pull.api.HttpServletOps.setResponse; import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST; import static javax.servlet.http.HttpServletResponse.SC_CONFLICT; import static javax.servlet.http.HttpServletResponse.SC_CREATED; @@ -194,16 +193,8 @@ } private void doInitProject(HttpServletRequest httpRequest, HttpServletResponse httpResponse) - throws RestApiException, IOException, PermissionBackendException { - - IdString id = getInitProjectName(httpRequest).get(); - String projectName = id.get(); - if (projectInitializationAction.initProject(projectName)) { - setResponse( - httpResponse, HttpServletResponse.SC_CREATED, "Project " + projectName + " initialized"); - return; - } - throw new InitProjectException(projectName); + throws IOException, ServletException { + projectInitializationAction.service(httpRequest, httpResponse); } @SuppressWarnings("unchecked")
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilterTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilterTest.java index 5ede668..9492d49 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilterTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilterTest.java
@@ -4,7 +4,6 @@ import static com.google.gerrit.httpd.restapi.RestApiServlet.SC_UNPROCESSABLE_ENTITY; import static javax.servlet.http.HttpServletResponse.SC_CONFLICT; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -174,15 +173,11 @@ when(request.getRequestURI()).thenReturn(INIT_PROJECT_URI); when(request.getHeader(ACCEPT)).thenReturn(MediaType.PLAIN_TEXT_UTF_8.toString()); - when(projectInitializationAction.initProject(PROJECT_NAME_GIT)).thenReturn(true); - when(response.getWriter()).thenReturn(printWriter); final PullReplicationFilter pullReplicationFilter = createPullReplicationFilter(); pullReplicationFilter.doFilter(request, response, filterChain); - verify(request, times(5)).getRequestURI(); - verify(projectInitializationAction).initProject(eq(PROJECT_NAME_GIT)); - verify(response).getWriter(); + verify(projectInitializationAction).service(request, response); } @Test @@ -254,19 +249,6 @@ } @Test - public void shouldBe500WhenProjectCannotBeInitiated() throws Exception { - when(request.getRequestURI()).thenReturn(INIT_PROJECT_URI); - when(request.getHeader(ACCEPT)).thenReturn(MediaType.PLAIN_TEXT_UTF_8.toString()); - when(projectInitializationAction.initProject(PROJECT_NAME_GIT)).thenReturn(false); - when(response.getOutputStream()).thenReturn(outputStream); - - final PullReplicationFilter pullReplicationFilter = createPullReplicationFilter(); - pullReplicationFilter.doFilter(request, response, filterChain); - - verify(response).setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - - @Test public void shouldBe500WhenResourceNotFound() throws Exception { when(request.getRequestURI()).thenReturn(DELETE_PROJECT_URI); when(request.getMethod()).thenReturn("DELETE");