Fix other NPE in expression logging, for #2264
This commit is contained in:
parent
a4c4a20767
commit
904129d0f7
@ -84,7 +84,11 @@ public class GetExpressionHistoryCommand extends Command {
|
||||
|
||||
try {
|
||||
List<String> expressions = toExpressionList(ProjectManager.singleton.getPreferenceStore().get("scripting.expressions"));
|
||||
Set<String> starredExpressions = new HashSet<String>(((TopList)ProjectManager.singleton.getPreferenceStore().get("scripting.starred-expressions")).getList());
|
||||
TopList topList = (TopList)ProjectManager.singleton.getPreferenceStore().get("scripting.starred-expressions");
|
||||
if (topList == null) {
|
||||
topList = new TopList(ProjectManager.EXPRESSION_HISTORY_MAX);
|
||||
}
|
||||
Set<String> starredExpressions = new HashSet<String>(topList.getList());
|
||||
ExpressionsList expressionsList = new ExpressionsList(expressions.stream()
|
||||
.map(s -> new ExpressionState(s, starredExpressions.contains(s)))
|
||||
.collect(Collectors.toList()));
|
||||
|
@ -27,6 +27,7 @@
|
||||
package com.google.refine.commands.expr;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -59,7 +60,8 @@ public class GetStarredExpressionsCommand extends Command {
|
||||
}
|
||||
|
||||
public static ExpressionList getExpressionsList() {
|
||||
List<String> starredExpressions = ((TopList)ProjectManager.singleton.getPreferenceStore().get("scripting.starred-expressions")).getList();
|
||||
TopList topList = (TopList)ProjectManager.singleton.getPreferenceStore().get("scripting.starred-expressions");
|
||||
List<String> starredExpressions = topList == null ? Collections.emptyList() : topList.getList();
|
||||
return new ExpressionList(starredExpressions.stream().map(e -> new Expression(e)).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
|
@ -68,17 +68,22 @@ public class ExpressionCommandTestBase {
|
||||
String starred = starredExpressionsJson == null ? "{\"class\":\"com.google.refine.preference.TopList\",\"top\":2147483647," +
|
||||
"\"list\":[]}" : starredExpressionsJson;
|
||||
String expressions = expressionsJson == null ? "{\"class\":\"com.google.refine.preference.TopList\",\"top\":100,\"list\":[]}" : expressionsJson;
|
||||
try {
|
||||
String jsonData = "{\"projectIDs\":[]\n" +
|
||||
",\"preferences\":{\"entries\":{\"scripting.starred-expressions\":" + starred +
|
||||
",\"scripting.expressions\":"+expressions+"}}}";
|
||||
initWorkspace(jsonData);
|
||||
}
|
||||
|
||||
public void initWorkspace(String jsonData) {
|
||||
try {
|
||||
File workspaceDir = TestUtils.createTempDirectory("openrefine-test-workspace-dir");
|
||||
File jsonPath = new File(workspaceDir, "workspace.json");
|
||||
FileUtils.writeStringToFile(jsonPath, "{\"projectIDs\":[]\n" +
|
||||
",\"preferences\":{\"entries\":{\"scripting.starred-expressions\":" + starred +
|
||||
",\"scripting.expressions\":"+expressions+"}}}");
|
||||
FileUtils.writeStringToFile(jsonPath, jsonData);
|
||||
FileProjectManager.initialize(workspaceDir);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void assertResponseJsonIs(String expectedJson) {
|
||||
String actualJson = writer.toString();
|
||||
|
@ -77,5 +77,17 @@ public class GetExpressionHistoryCommandTests extends ExpressionCommandTestBase
|
||||
command.doGet(request, response);
|
||||
assertResponseJsonIs(json);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUninitialized() throws ServletException, IOException {
|
||||
|
||||
initWorkspace("{}");
|
||||
|
||||
String json = "{\n" +
|
||||
" \"expressions\" : []\n" +
|
||||
" }";
|
||||
command.doGet(request, response);
|
||||
assertResponseJsonIs(json);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -67,4 +67,16 @@ public class GetStarredExpressionsCommandTests extends ExpressionCommandTestBase
|
||||
command.doGet(request, response);
|
||||
assertResponseJsonIs(json);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUninitialized() throws ServletException, IOException {
|
||||
|
||||
initWorkspace("{}");
|
||||
|
||||
String json = "{\n" +
|
||||
" \"expressions\" : []\n" +
|
||||
" }";
|
||||
command.doGet(request, response);
|
||||
assertResponseJsonIs(json);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user