From 730ad1c3c6b5389bf8e0be1c7e96bf8dbf340df1 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 8 Aug 2019 12:57:38 -0400 Subject: [PATCH] config service: return status based on whether set/unset were successful --- .../http/service/config/ConfigController.java | 10 ++++++++-- .../http/service/config/ConfigService.java | 14 ++++++++------ .../http/service/config/ConfigControllerTest.java | 3 +++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/http-service/src/main/java/net/runelite/http/service/config/ConfigController.java b/http-service/src/main/java/net/runelite/http/service/config/ConfigController.java index b14a03659c..971094a585 100644 --- a/http-service/src/main/java/net/runelite/http/service/config/ConfigController.java +++ b/http-service/src/main/java/net/runelite/http/service/config/ConfigController.java @@ -81,7 +81,10 @@ public class ConfigController return; } - configService.setKey(session.getUser(), key, value); + if (!configService.setKey(session.getUser(), key, value)) + { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } } @RequestMapping(path = "/{key:.+}", method = DELETE) @@ -98,6 +101,9 @@ public class ConfigController return; } - configService.unsetKey(session.getUser(), key); + if (!configService.unsetKey(session.getUser(), key)) + { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } } } diff --git a/http-service/src/main/java/net/runelite/http/service/config/ConfigService.java b/http-service/src/main/java/net/runelite/http/service/config/ConfigService.java index 9fa47ec98c..8a21014b51 100644 --- a/http-service/src/main/java/net/runelite/http/service/config/ConfigService.java +++ b/http-service/src/main/java/net/runelite/http/service/config/ConfigService.java @@ -121,7 +121,7 @@ public class ConfigService return new Configuration(config); } - public void setKey( + public boolean setKey( int userId, String key, @Nullable String value @@ -129,39 +129,41 @@ public class ConfigService { if (key.startsWith("$") || key.startsWith("_")) { - return; + return false; } String[] split = key.split("\\.", 2); if (split.length != 2) { - return; + return false; } Object jsonValue = parseJsonString(value); mongoCollection.updateOne(eq("_userId", userId), set(split[0] + "." + split[1].replace('.', ':'), jsonValue), upsertUpdateOptions); + return true; } - public void unsetKey( + public boolean unsetKey( int userId, String key ) { if (key.startsWith("$") || key.startsWith("_")) { - return; + return false; } String[] split = key.split("\\.", 2); if (split.length != 2) { - return; + return false; } mongoCollection.updateOne(eq("_userId", userId), unset(split[0] + "." + split[1].replace('.', ':'))); + return true; } private static Object parseJsonString(String value) diff --git a/http-service/src/test/java/net/runelite/http/service/config/ConfigControllerTest.java b/http-service/src/test/java/net/runelite/http/service/config/ConfigControllerTest.java index 88657ca04c..27320f3f72 100644 --- a/http-service/src/test/java/net/runelite/http/service/config/ConfigControllerTest.java +++ b/http-service/src/test/java/net/runelite/http/service/config/ConfigControllerTest.java @@ -34,6 +34,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -67,6 +68,8 @@ public class ConfigControllerTest { when(authFilter.handle(any(HttpServletRequest.class), any(HttpServletResponse.class))) .thenReturn(mock(SessionEntry.class)); + + when(configService.setKey(anyInt(), anyString(), anyString())).thenReturn(true); } @Test