Accept empty string for the limit in a reconciliation config

This commit is contained in:
Antonin Delpeuch 2018-03-04 00:47:06 +00:00
parent 1866f9691d
commit 8c8b091adc
2 changed files with 39 additions and 3 deletions

View File

@ -111,8 +111,13 @@ public class StandardReconConfig extends ReconConfig {
}
JSONObject t = obj.has("type") && !obj.isNull("type") ? obj.getJSONObject("type") : null;
int limit = obj.has("limit") && !obj.isNull("limit") ? obj.getInt("limit") : 0;
int limit;
try {
limit = obj.has("limit") && !obj.isNull("limit") ? obj.getInt("limit") : 0;
} catch(JSONException e) {
limit = 0;
}
return new StandardReconConfig(
obj.getString("service"),

View File

@ -53,7 +53,7 @@ public class ReconTests extends RefineTest {
* @throws Exception
*/
@Test
public void limitJSONKeyTest() throws Exception {
public void limitJSONKeyAsIntTest() throws Exception {
JSONObject obj = new JSONObject(
" {\n" +
" \"mode\": \"standard-service\",\n" +
@ -74,4 +74,35 @@ public class ReconTests extends RefineTest {
// Assert the object is created
Assert.assertTrue(config != null);
}
/**
* Regression for issue #1526:
* the UI used to send an empty limit as an empty string, which
* failed to be parsed by the backend.
* @throws Exception
*/
@Test
public void limitJSONKeyAsEmptyStringTest() throws Exception {
JSONObject obj = new JSONObject(
" {\n" +
" \"mode\": \"standard-service\",\n" +
" \"service\": \"https://tools.wmflabs.org/openrefine-wikidata/en/api\",\n" +
" \"identifierSpace\": \"http://www.wikidata.org/entity/\",\n" +
" \"schemaSpace\": \"http://www.wikidata.org/prop/direct/\",\n" +
" \"type\": {\n" +
" \"id\": \"Q13442814\",\n" +
" \"name\": \"scientific article\"\n" +
" },\n" +
" \"autoMatch\": true,\n" +
" \"columnDetails\": [],\n" +
" \"limit\": \"\"\n" +
" }");
ReconConfig config = StandardReconConfig.reconstruct(obj);
// Assert the object is created
Assert.assertTrue(config != null);
}
}