From adde70f090ee14278f3c87258bab9e992d4c183b Mon Sep 17 00:00:00 2001 From: Johannes Schnatterer Date: Tue, 7 Aug 2018 10:44:18 +0200 Subject: [PATCH] Fixes NPE in HgConfigPackageResource for non-existing packages. --- .../api/v2/resources/HgConfigPackageResource.java | 13 ++++++++----- .../v2/resources/HgConfigPackageResourceTest.java | 9 +++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/api/v2/resources/HgConfigPackageResource.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/api/v2/resources/HgConfigPackageResource.java index 7e3c0e9a66..124c2dcb61 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/api/v2/resources/HgConfigPackageResource.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/api/v2/resources/HgConfigPackageResource.java @@ -80,12 +80,15 @@ public class HgConfigPackageResource { HgPackage pkg = pkgReader.getPackage(pkgId); - // First path param cannot be null (leaving it results in 405) - if (HgInstallerFactory.createInstaller() - .installPackage(client, handler, SCMContext.getContext().getBaseDirectory(), pkg)) { - response = Response.noContent().build(); + if (pkg != null) { + if (HgInstallerFactory.createInstaller() + .installPackage(client, handler, SCMContext.getContext().getBaseDirectory(), pkg)) { + response = Response.noContent().build(); + } else { + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } else { - response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + response = Response.status(Response.Status.NOT_FOUND).build(); } return response; diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/api/v2/resources/HgConfigPackageResourceTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/api/v2/resources/HgConfigPackageResourceTest.java index 5c0fc65e26..e91662df3f 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/api/v2/resources/HgConfigPackageResourceTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/api/v2/resources/HgConfigPackageResourceTest.java @@ -152,10 +152,11 @@ public class HgConfigPackageResourceTest { @Test @SubjectAware(username = "writeOnly") - public void shouldHandleMissingPackageId() throws Exception { - - MockHttpResponse response = put(null); - assertEquals(HttpServletResponse.SC_METHOD_NOT_ALLOWED, response.getStatus()); + public void shouldHandlePackagesThatAreNotFound() throws Exception { + String packageId = "this-package-does-not-ex"; + when(hgPackageReader.getPackage(packageId)).thenReturn(null); + MockHttpResponse response = put(packageId); + assertEquals(HttpServletResponse.SC_NOT_FOUND, response.getStatus()); } @Test