Skip to content

Commit

Permalink
Add
Browse files Browse the repository at this point in the history
  • Loading branch information
bencomp committed Oct 5, 2023
1 parent 7e0738e commit 7d72db1
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 68 deletions.
28 changes: 11 additions & 17 deletions src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@
import edu.harvard.iq.dataverse.util.json.JSONLDUtil;
import edu.harvard.iq.dataverse.util.json.JsonLDTerm;
import edu.harvard.iq.dataverse.util.json.JsonParseException;
import edu.harvard.iq.dataverse.util.SignpostingResources;
import edu.harvard.iq.dataverse.util.json.JsonUtil;
import edu.harvard.iq.dataverse.util.SignpostingResources;
import edu.harvard.iq.dataverse.search.IndexServiceBean;

import static edu.harvard.iq.dataverse.util.json.JsonPrinter.*;
Expand All @@ -109,7 +109,6 @@

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.net.URI;
import java.sql.Timestamp;
import java.text.MessageFormat;
Expand Down Expand Up @@ -675,10 +674,10 @@ public Response updateDraftVersion(@Context ContainerRequestContext crc, String
return error( Response.Status.BAD_REQUEST, "Only the :draft version can be updated");
}

try ( StringReader rdr = new StringReader(jsonBody) ) {
try {
DataverseRequest req = createDataverseRequest(getRequestUser(crc));
Dataset ds = findDatasetOrDie(id);
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);
DatasetVersion incomingVersion = jsonParser().parseDatasetVersion(json);

// clear possibly stale fields from the incoming dataset version.
Expand Down Expand Up @@ -834,10 +833,10 @@ public Response deleteVersionMetadata(@Context ContainerRequestContext crc, Stri
}

private Response processDatasetFieldDataDelete(String jsonBody, String id, DataverseRequest req) {
try (StringReader rdr = new StringReader(jsonBody)) {
try {

Dataset ds = findDatasetOrDie(id);
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);
//Get the current draft or create a new version to update
DatasetVersion dsv = ds.getOrCreateEditVersion();
dsv.getTermsOfUseAndAccess().setDatasetVersion(dsv);
Expand Down Expand Up @@ -991,10 +990,10 @@ public Response editVersionMetadata(@Context ContainerRequestContext crc, String


private Response processDatasetUpdate(String jsonBody, String id, DataverseRequest req, Boolean replaceData){
try (StringReader rdr = new StringReader(jsonBody)) {
try {

Dataset ds = findDatasetOrDie(id);
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);
//Get the current draft or create a new version to update
DatasetVersion dsv = ds.getOrCreateEditVersion();
dsv.getTermsOfUseAndAccess().setDatasetVersion(dsv);
Expand Down Expand Up @@ -1441,8 +1440,7 @@ public Response createFileEmbargo(@Context ContainerRequestContext crc, @PathPar
return error(Status.BAD_REQUEST, "No Embargoes allowed");
}

StringReader rdr = new StringReader(jsonBody);
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);

Embargo embargo = new Embargo();

Expand Down Expand Up @@ -1585,8 +1583,7 @@ public Response removeFileEmbargo(@Context ContainerRequestContext crc, @PathPar
return error(Status.BAD_REQUEST, "No Embargoes allowed");
}

StringReader rdr = new StringReader(jsonBody);
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);

List<DataFile> datasetFiles = dataset.getFiles();
List<DataFile> embargoFilesToUnset = new LinkedList<>();
Expand Down Expand Up @@ -2101,8 +2098,7 @@ public Response returnToAuthor(@Context ContainerRequestContext crc, @PathParam(
if (jsonBody == null || jsonBody.isEmpty()) {
return error(Response.Status.BAD_REQUEST, "You must supply JSON to this API endpoint and it must contain a reason for returning the dataset (field: reasonForReturn).");
}
StringReader rdr = new StringReader(jsonBody);
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);
try {
Dataset dataset = findDatasetOrDie(idSupplied);
String reasonForReturn = null;
Expand Down Expand Up @@ -2354,9 +2350,7 @@ public Response completeMPUpload(@Context ContainerRequestContext crc, String pa
List<PartETag> eTagList = new ArrayList<PartETag>();
logger.info("Etags: " + partETagBody);
try {
JsonReader jsonReader = Json.createReader(new StringReader(partETagBody));
JsonObject object = jsonReader.readObject();
jsonReader.close();
JsonObject object = JsonUtil.getJsonObject(partETagBody);
for (String partNo : object.keySet()) {
eTagList.add(new PartETag(Integer.parseInt(partNo), object.getString(partNo)));
}
Expand Down
11 changes: 6 additions & 5 deletions src/main/java/edu/harvard/iq/dataverse/api/Dataverses.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,9 @@
import edu.harvard.iq.dataverse.util.json.JSONLDUtil;
import edu.harvard.iq.dataverse.util.json.JsonParseException;
import edu.harvard.iq.dataverse.util.json.JsonPrinter;
import edu.harvard.iq.dataverse.util.json.JsonUtil;

import static edu.harvard.iq.dataverse.util.json.JsonPrinter.brief;
import java.io.StringReader;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
Expand Down Expand Up @@ -178,8 +179,8 @@ public Response addDataverse(@Context ContainerRequestContext crc, String body,

Dataverse d;
JsonObject dvJson;
try (StringReader rdr = new StringReader(body)) {
dvJson = Json.createReader(rdr).readObject();
try {
dvJson = JsonUtil.getJsonObject(body);
d = jsonParser().parseDataverse(dvJson);
} catch (JsonParsingException jpe) {
logger.log(Level.SEVERE, "Json: {0}", body);
Expand Down Expand Up @@ -559,8 +560,8 @@ public Response recreateDataset(@Context ContainerRequestContext crc, String jso
}

private Dataset parseDataset(String datasetJson) throws WrappedResponse {
try (StringReader rdr = new StringReader(datasetJson)) {
return jsonParser().parseDataset(Json.createReader(rdr).readObject());
try {
return jsonParser().parseDataset(JsonUtil.getJsonObject(datasetJson));
} catch (JsonParsingException | JsonParseException jpe) {
logger.log(Level.SEVERE, "Error parsing dataset json. Json: {0}", datasetJson);
throw new WrappedResponse(error(Status.BAD_REQUEST, "Error parsing Json: " + jpe.getMessage()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import edu.harvard.iq.dataverse.util.StringUtil;
import edu.harvard.iq.dataverse.util.json.JsonParseException;
import edu.harvard.iq.dataverse.util.json.JsonPrinter;
import edu.harvard.iq.dataverse.util.json.JsonUtil;
import jakarta.json.JsonObjectBuilder;
import static edu.harvard.iq.dataverse.util.json.NullSafeJsonBuilder.jsonObjectBuilder;
import java.io.IOException;
Expand Down Expand Up @@ -164,8 +165,8 @@ public Response createHarvestingClient(@Context ContainerRequestContext crc, Str
return wr.getResponse();
}

try ( StringReader rdr = new StringReader(jsonBody) ) {
JsonObject json = Json.createReader(rdr).readObject();
try {
JsonObject json = JsonUtil.getJsonObject(jsonBody);

// Check that the client with this name doesn't exist yet:
// (we could simply let the command fail, but that does not result
Expand Down Expand Up @@ -261,9 +262,9 @@ public Response modifyHarvestingClient(@Context ContainerRequestContext crc, Str

String ownerDataverseAlias = harvestingClient.getDataverse().getAlias();

try ( StringReader rdr = new StringReader(jsonBody) ) {
try {
DataverseRequest req = createDataverseRequest(getRequestUser(crc));
JsonObject json = Json.createReader(rdr).readObject();
JsonObject json = JsonUtil.getJsonObject(jsonBody);

HarvestingClient newHarvestingClient = new HarvestingClient();
String newDataverseAlias = jsonParser().parseHarvestingClient(json, newHarvestingClient);
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/edu/harvard/iq/dataverse/api/Prov.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
import edu.harvard.iq.dataverse.engine.command.impl.PersistProvJsonCommand;
import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand;
import edu.harvard.iq.dataverse.util.BundleUtil;
import java.io.StringReader;
import edu.harvard.iq.dataverse.util.json.JsonUtil;

import java.util.HashMap;
import java.util.logging.Logger;
import jakarta.inject.Inject;
Expand Down Expand Up @@ -109,11 +110,10 @@ public Response addProvFreeForm(@Context ContainerRequestContext crc, String bod
if(!systemConfig.isProvCollectionEnabled()) {
return error(FORBIDDEN, BundleUtil.getStringFromBundle("api.prov.error.provDisabled"));
}
StringReader rdr = new StringReader(body);
JsonObject jsonObj = null;

try {
jsonObj = Json.createReader(rdr).readObject();
jsonObj = JsonUtil.getJsonObject(body);
} catch (JsonException ex) {
return error(BAD_REQUEST, BundleUtil.getStringFromBundle("api.prov.error.freeformInvalidJson"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@
import edu.harvard.iq.dataverse.util.ConstraintViolationUtil;
import edu.harvard.iq.dataverse.util.json.JsonParseException;
import edu.harvard.iq.dataverse.util.json.JsonParser;
import edu.harvard.iq.dataverse.util.json.JsonUtil;
import edu.harvard.iq.dataverse.license.LicenseServiceBean;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Date;
Expand All @@ -60,7 +60,6 @@
import jakarta.json.Json;
import jakarta.json.JsonObject;
import jakarta.json.JsonObjectBuilder;
import jakarta.json.JsonReader;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.validation.ConstraintViolation;
Expand Down Expand Up @@ -259,9 +258,8 @@ public Dataset doImportHarvestedDataset(DataverseRequest dataverseRequest, Harve
throw new ImportException("Failed to transform XML metadata format "+metadataFormat+" into a DatasetDTO");
}
}

JsonReader jsonReader = Json.createReader(new StringReader(json));
JsonObject obj = jsonReader.readObject();

JsonObject obj = JsonUtil.getJsonObject(json);
//and call parse Json to read it into a dataset
try {
JsonParser parser = new JsonParser(datasetfieldService, metadataBlockService, settingsService, licenseService, harvestingClient);
Expand Down Expand Up @@ -396,10 +394,8 @@ public JsonObject ddiToJson(String xmlToParse) throws ImportException, XMLStream
// convert DTO to Json,
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(dsDTO);
JsonReader jsonReader = Json.createReader(new StringReader(json));
JsonObject obj = jsonReader.readObject();

return obj;
return JsonUtil.getJsonObject(json);
}

public JsonObjectBuilder doImport(DataverseRequest dataverseRequest, Dataverse owner, String xmlToParse, String fileName, ImportType importType, PrintWriter cleanupLog) throws ImportException, IOException {
Expand All @@ -416,8 +412,7 @@ public JsonObjectBuilder doImport(DataverseRequest dataverseRequest, Dataverse o
// convert DTO to Json,
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(dsDTO);
JsonReader jsonReader = Json.createReader(new StringReader(json));
JsonObject obj = jsonReader.readObject();
JsonObject obj = JsonUtil.getJsonObject(json);
//and call parse Json to read it into a dataset
try {
JsonParser parser = new JsonParser(datasetfieldService, metadataBlockService, settingsService, licenseService);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -596,13 +596,14 @@ public void globusUpload(String jsonData, ApiToken token, Dataset dataset, Strin
Thread.sleep(5000);

JsonObject jsonObject = null;
try (StringReader rdr = new StringReader(jsonData)) {
jsonObject = Json.createReader(rdr).readObject();
try {
jsonObject = JsonUtil.getJsonObject(jsonData);
} catch (Exception jpe) {
jpe.printStackTrace();
logger.log(Level.SEVERE, "Error parsing dataset json. Json: {0}");
logger.log(Level.SEVERE, "Error parsing dataset json. Json: {0}", jsonData);
// TODO: I think an (parsing) exception should stop the process, shouldn't it?
}
logger.info("json: " + JsonUtil.prettyPrint(jsonObject));
logger.log(Level.INFO, "json: {0}", JsonUtil.prettyPrint(jsonObject));

String taskIdentifier = jsonObject.getString("taskIdentifier");

Expand Down Expand Up @@ -808,11 +809,12 @@ private String addFiles(String curlCommand, Logger globusLogger) {
sb.append(line);
globusLogger.info(" API Output : " + sb.toString());
JsonObject jsonObject = null;
try (StringReader rdr = new StringReader(sb.toString())) {
jsonObject = Json.createReader(rdr).readObject();
try {
jsonObject = JsonUtil.getJsonObject(sb.toString());
} catch (Exception jpe) {
jpe.printStackTrace();
globusLogger.log(Level.SEVERE, "Error parsing dataset json.");
// TODO: a parsing exception should cause the process to stop.
}

status = jsonObject.getString("status");
Expand Down Expand Up @@ -853,11 +855,12 @@ public void globusDownload(String jsonData, Dataset dataset, User authUser) thro
globusLogger.info("Starting an globusDownload ");

JsonObject jsonObject = null;
try (StringReader rdr = new StringReader(jsonData)) {
jsonObject = Json.createReader(rdr).readObject();
try {
jsonObject = JsonUtil.getJsonObject(jsonData);
} catch (Exception jpe) {
jpe.printStackTrace();
globusLogger.log(Level.SEVERE, "Error parsing dataset json. Json: {0}");
globusLogger.log(Level.SEVERE, "Error parsing dataset json. Json: {0}", jsonData);
// TODO: stop the process after this parsing exception.
}

String taskIdentifier = jsonObject.getString("taskIdentifier");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

import edu.harvard.iq.dataverse.Dataset;
import edu.harvard.iq.dataverse.DatasetServiceBean;
import java.io.StringReader;
import edu.harvard.iq.dataverse.util.json.JsonUtil;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -14,10 +15,8 @@
import jakarta.ejb.EJBException;
import jakarta.ejb.Stateless;
import jakarta.inject.Named;
import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonObject;
import jakarta.json.JsonReader;
import jakarta.json.JsonValue;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
Expand Down Expand Up @@ -125,9 +124,7 @@ public List<DatasetMetrics> parseSushiReport(JsonObject report, Dataset dataset)
List<DatasetMetrics> datasetMetricsDataset = new ArrayList<>();
String globalId = null;
Dataset ds = null;
StringReader rdr = new StringReader(reportDataset.toString());
JsonReader jrdr = Json.createReader(rdr);
JsonObject obj = jrdr.readObject();
JsonObject obj = JsonUtil.getJsonObject(reportDataset.toString());
String jsonGlobalId = "";
String globalIdType = "";
if (obj.containsKey("dataset-id")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
import edu.harvard.iq.dataverse.actionlogging.ActionLogServiceBean;
import edu.harvard.iq.dataverse.api.ApiBlockingFilter;
import edu.harvard.iq.dataverse.util.StringUtil;

import edu.harvard.iq.dataverse.util.json.JsonUtil;
import jakarta.ejb.EJB;
import jakarta.ejb.Stateless;
import jakarta.inject.Named;
import jakarta.json.Json;
import jakarta.json.JsonArray;
import jakarta.json.JsonObject;
import jakarta.json.JsonReader;
import jakarta.json.JsonValue;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
Expand All @@ -20,7 +18,6 @@
import org.json.JSONException;
import org.json.JSONObject;

import java.io.StringReader;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
Expand Down Expand Up @@ -696,8 +693,8 @@ public Long getValueForCompoundKeyAsLong(Key key, String param){
try {
return Long.parseLong(val);
} catch (NumberFormatException ex) {
try ( StringReader rdr = new StringReader(val) ) {
JsonObject settings = Json.createReader(rdr).readObject();
try {
JsonObject settings = JsonUtil.getJsonObject(val);
if(settings.containsKey(param)) {
return Long.parseLong(settings.getString(param));
} else if(settings.containsKey("default")) {
Expand Down Expand Up @@ -730,8 +727,8 @@ public Boolean getValueForCompoundKeyAsBoolean(Key key, String param) {
return null;
}

try (StringReader rdr = new StringReader(val)) {
JsonObject settings = Json.createReader(rdr).readObject();
try {
JsonObject settings = JsonUtil.getJsonObject(val);
if (settings.containsKey(param)) {
return Boolean.parseBoolean(settings.getString(param));
} else if (settings.containsKey("default")) {
Expand Down Expand Up @@ -897,8 +894,7 @@ public Map<String, String> getBaseMetadataLanguageMap(Map<String,String> languag
if(mlString.isEmpty()) {
mlString="[]";
}
JsonReader jsonReader = Json.createReader(new StringReader(mlString));
JsonArray languages = jsonReader.readArray();
JsonArray languages = JsonUtil.getJsonArray(mlString);
for(JsonValue jv: languages) {
JsonObject lang = (JsonObject) jv;
languageMap.put(lang.getString("locale"), lang.getString("title"));
Expand Down
Loading

0 comments on commit 7d72db1

Please sign in to comment.