config service: return status based on whether set/unset were successful
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user