From bf450aca21d5bd13acdb9667909c790766f5f9f2 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 15 Sep 2017 21:04:46 +0100 Subject: [PATCH] [VIVO-1320] Convert some org.json usages to Jackson --- .../grefine/GrefineMqlreadServlet.java | 125 ++++++------ .../grefine/GrefinePropertyListServlet.java | 40 ++-- .../grefine/JSONReconcileServlet.java | 187 ++++++++++-------- .../vitro/webapp/utils/json/JacksonUtils.java | 8 + .../grefine/JSONReconcileServletTest.java | 9 +- dependencies/pom.xml | 4 +- 6 files changed, 195 insertions(+), 178 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/GrefineMqlreadServlet.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/GrefineMqlreadServlet.java index 303d6869e..f4446fc26 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/GrefineMqlreadServlet.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/GrefineMqlreadServlet.java @@ -5,6 +5,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.grefine; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -14,11 +15,13 @@ import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; +import edu.cornell.mannlib.vitro.webapp.utils.json.JacksonUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties; import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; @@ -57,7 +60,7 @@ public class GrefineMqlreadServlet extends VitroHttpServlet { try { if (vreq.getParameter("query") != null) { - JSONObject qJson = getResult(vreq, req, resp); + ObjectNode qJson = getResult(vreq, req, resp); log.debug("result: " + qJson.toString()); String responseStr = (vreq.getParameter("callback") == null) ? qJson .toString() : vreq.getParameter("callback") + "(" @@ -72,54 +75,49 @@ public class GrefineMqlreadServlet extends VitroHttpServlet { } } - private JSONObject getResult(VitroRequest vreq, HttpServletRequest req, - HttpServletResponse resp) throws ServletException { + private ObjectNode getResult(VitroRequest vreq, HttpServletRequest req, + HttpServletResponse resp) throws ServletException { - JSONObject resultAllJson = new JSONObject(); + ObjectNode resultAllJson = JsonNodeFactory.instance.objectNode(); - try { - // parse query - ArrayList subjectUriList = new ArrayList(); - Map propertyUriMap = new HashMap(); - String query = vreq.getParameter("query"); - parseQuery(query, subjectUriList, propertyUriMap); - - // run SPARQL query to get the results - JSONArray resultAllJsonArr = new JSONArray(); - DataPropertyStatementDao dpsDao = vreq.getUnfilteredWebappDaoFactory().getDataPropertyStatementDao(); - for (String subjectUri: subjectUriList) { - JSONObject subjectPropertyResultJson = new JSONObject(); - subjectPropertyResultJson.put("id", subjectUri); - for (Map.Entry entry : propertyUriMap.entrySet()) { - int limit = 200; // default - String propertyUri = entry.getKey(); - JSONArray propertyUriOptions = entry.getValue(); - for (int i=0; i literals = dpsDao.getDataPropertyValuesForIndividualByProperty(subjectUri, propertyUri); - // Make sure the subject has a value for this property - if (literals.size() > 0) { - int counter = 0; - JSONArray valueJsonArr = new JSONArray(); - for (Literal literal: literals) { - if (counter <= limit) { - String value = literal.getLexicalForm(); - valueJsonArr.put(value); - } - counter++; - } - subjectPropertyResultJson.put(propertyUri, valueJsonArr); - } - } - resultAllJsonArr.put(subjectPropertyResultJson); - } - resultAllJson.put("result", resultAllJsonArr); + // parse query + ArrayList subjectUriList = new ArrayList(); + Map propertyUriMap = new HashMap(); + String query = vreq.getParameter("query"); + parseQuery(query, subjectUriList, propertyUriMap); - } catch (JSONException e) { - log.error("GrefineMqlreadServlet getResult JSONException: " + e); + // run SPARQL query to get the results + ArrayNode resultAllJsonArr = JsonNodeFactory.instance.arrayNode(); + DataPropertyStatementDao dpsDao = vreq.getUnfilteredWebappDaoFactory().getDataPropertyStatementDao(); + for (String subjectUri: subjectUriList) { + ObjectNode subjectPropertyResultJson = JsonNodeFactory.instance.objectNode(); + subjectPropertyResultJson.put("id", subjectUri); + for (Map.Entry entry : propertyUriMap.entrySet()) { + int limit = 200; // default + String propertyUri = entry.getKey(); + ArrayNode propertyUriOptions = entry.getValue(); + for (int i=0; i literals = dpsDao.getDataPropertyValuesForIndividualByProperty(subjectUri, propertyUri); + // Make sure the subject has a value for this property + if (literals.size() > 0) { + int counter = 0; + ArrayNode valueJsonArr = JsonNodeFactory.instance.arrayNode(); + for (Literal literal: literals) { + if (counter <= limit) { + String value = literal.getLexicalForm(); + valueJsonArr.add(value); + } + counter++; + } + subjectPropertyResultJson.put(propertyUri, valueJsonArr); + } + } + resultAllJsonArr.add(subjectPropertyResultJson); } + resultAllJson.put("result", resultAllJsonArr); // System.out.println(resultAllJson); return resultAllJson; @@ -131,31 +129,32 @@ public class GrefineMqlreadServlet extends VitroHttpServlet { * @param subjectUriList Subject URIs * @param propertyUriMap Property maps */ - private void parseQuery(String query, ArrayList subjectUriList, Map propertyUriMap) { + private void parseQuery(String query, ArrayList subjectUriList, Map propertyUriMap) { try { - JSONObject rawJson = new JSONObject(query); - JSONArray qJsonArr = rawJson.getJSONArray("query"); - for (int i=0; i jsonObjNames = jsonObj.fieldNames(); + while (jsonObjNames.hasNext()) { + String objName = (String)jsonObjNames.next(); if (objName.contains("http://")) { // most likely this is a propertyUri // e.g. http://weill.cornell.edu/vivo/ontology/wcmc#cwid Object propertyUriObj = jsonObj.get(objName); - if (propertyUriObj instanceof JSONArray) { - propertyUriMap.put(objName, (JSONArray)propertyUriObj); + if (propertyUriObj instanceof ArrayNode) { + propertyUriMap.put(objName, (ArrayNode) propertyUriObj); } } else if ("id".equals(objName)) { // id Object idObj = jsonObj.get(objName); // TODO: This is a String object but not sure what it is for } else if ("id|=".equals(objName)) { // list of subject uri Object subjectUriObj = jsonObj.get(objName); - if (subjectUriObj instanceof JSONArray) { - JSONArray subjectUriUriArr = (JSONArray)subjectUriObj; - for (int k=0; k 0) { for (Iterator iter = classPropertiesMap.keySet().iterator(); iter.hasNext();) { // add results to schema VClass vc = (VClass) iter.next(); @@ -95,24 +95,24 @@ public class GrefinePropertyListServlet extends VitroHttpServlet { //System.out.println("--- uri: " + prop.getURI()); //System.out.println("--- name: " + nameStr); // top level - JSONObject propertiesItemJson = new JSONObject(); - JSONObject rootSchemaJson = new JSONObject(); + ObjectNode propertiesItemJson = JsonNodeFactory.instance.objectNode(); + ObjectNode rootSchemaJson = JsonNodeFactory.instance.objectNode(); rootSchemaJson.put("id", vc.getURI()); rootSchemaJson.put("name", vc.getName()); - rootSchemaJson.put("alias", new JSONArray()); + rootSchemaJson.put("alias", JsonNodeFactory.instance.arrayNode()); propertiesItemJson.put("schema", rootSchemaJson); // second level propertiesItemJson.put("id", prop.getURI()); propertiesItemJson.put("name", nameStr); - propertiesItemJson.put("alias", new JSONArray()); + propertiesItemJson.put("alias", JsonNodeFactory.instance.arrayNode()); - JSONObject expectsJson = new JSONObject(); + ObjectNode expectsJson = JsonNodeFactory.instance.objectNode(); expectsJson.put("id", prop.getURI()); expectsJson.put("name", nameStr); - expectsJson.put("alias", new JSONArray()); + expectsJson.put("alias", JsonNodeFactory.instance.arrayNode()); propertiesItemJson.put("expects", expectsJson); - propertiesJsonArr.put(propertiesItemJson); + propertiesJsonArr.add(propertiesItemJson); } } } @@ -154,30 +154,30 @@ public class GrefinePropertyListServlet extends VitroHttpServlet { for (DataProperty prop: vcProps) { String nameStr = prop.getPublicName()==null ? prop.getName()==null ? null : prop.getName() : prop.getPublicName(); // top level - JSONObject propertiesItemJson = new JSONObject(); + ObjectNode propertiesItemJson = JsonNodeFactory.instance.objectNode(); - JSONObject rootSchemaJson = new JSONObject(); + ObjectNode rootSchemaJson = JsonNodeFactory.instance.objectNode(); rootSchemaJson.put("id", topClass.getURI()); rootSchemaJson.put("name", topClass.getName()); - rootSchemaJson.put("alias", new JSONArray()); + rootSchemaJson.put("alias", JsonNodeFactory.instance.arrayNode()); propertiesItemJson.put("schema", rootSchemaJson); // second level propertiesItemJson.put("id", vc.getURI()); propertiesItemJson.put("name", vc.getName()); - propertiesItemJson.put("alias", new JSONArray()); + propertiesItemJson.put("alias", JsonNodeFactory.instance.arrayNode()); propertiesItemJson.put("id2", prop.getURI()); propertiesItemJson.put("name2", nameStr); - propertiesItemJson.put("alias2", new JSONArray()); + propertiesItemJson.put("alias2", JsonNodeFactory.instance.arrayNode()); - JSONObject expectsJson = new JSONObject(); + ObjectNode expectsJson = JsonNodeFactory.instance.objectNode(); expectsJson.put("id", prop.getURI()); expectsJson.put("name", nameStr); - expectsJson.put("alias", new JSONArray()); + expectsJson.put("alias", JsonNodeFactory.instance.arrayNode()); propertiesItemJson.put("expects", expectsJson); - propertiesJsonArr.put(propertiesItemJson); + propertiesJsonArr.add(propertiesItemJson); } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServlet.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServlet.java index 38a39b2e8..5aeeb440f 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServlet.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServlet.java @@ -16,12 +16,15 @@ import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; +import edu.cornell.mannlib.vitro.webapp.utils.json.JacksonUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; import edu.cornell.mannlib.vitro.webapp.application.ApplicationUtils; import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties; @@ -45,6 +48,8 @@ import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames; @WebServlet(name = "JSON Reconcile Service", urlPatterns = {"/reconcile"} ) public class JSONReconcileServlet extends VitroHttpServlet { + private static final String INTERNAL_QUERY_NAME = "A0B1C2"; + private static final String PARAM_QUERY = "term"; private static final long serialVersionUID = 1L; private static String QUERY_PARAMETER_NAME = "term"; @@ -70,7 +75,7 @@ public class JSONReconcileServlet extends VitroHttpServlet { try { if (vreq.getParameter("query") != null || vreq.getParameter("queries") != null) { - JSONObject qJson = getResult(vreq, req, resp); + ObjectNode qJson = getResult(vreq, req, resp); log.debug("result: " + qJson.toString()); String responseStr = (vreq.getParameter("callback") == null) ? qJson .toString() : vreq.getParameter("callback") + "(" @@ -89,7 +94,7 @@ public class JSONReconcileServlet extends VitroHttpServlet { } defaultTypeList = ConfigurationProperties.getBean(req).getProperty("Vitro.reconcile.defaultTypeList"); serverName = req.getServerName(); - JSONObject metaJson = getMetadata(req, resp, defaultNamespace, defaultTypeList, serverName, serverPort); + ObjectNode metaJson = getMetadata(req, resp, defaultNamespace, defaultTypeList, serverName, serverPort); String callbackStr = (vreq.getParameter("callback") == null) ? "" : vreq.getParameter("callback"); ServletOutputStream out = resp.getOutputStream(); @@ -100,16 +105,21 @@ public class JSONReconcileServlet extends VitroHttpServlet { } } - private JSONObject getResult(VitroRequest vreq, HttpServletRequest req, + private ObjectNode getResult(VitroRequest vreq, HttpServletRequest req, HttpServletResponse resp) throws ServletException { - HashMap searchWithTypeMap = new HashMap(); - HashMap searchNoTypeMap = new HashMap(); + HashMap searchWithTypeMap = new HashMap(); + HashMap searchNoTypeMap = new HashMap(); ArrayList queries = new ArrayList(); Object qObj = vreq.getParameter("queries"); if (qObj == null) { qObj = vreq.getParameter("query"); + if (qObj instanceof String) { + if (!((String)qObj).contains("{")) { + qObj = "{ \"query\" : \"" + qObj + "\" }"; + } + } } if (qObj != null && qObj instanceof String) { @@ -126,21 +136,21 @@ public class JSONReconcileServlet extends VitroHttpServlet { try { for (int i = 0; i < queries.size(); i++) { String queryStr = queries.get(i); - JSONObject json = new JSONObject(queryStr); + ObjectMapper mapper = new ObjectMapper(); + JsonNode json = mapper.readTree(queryStr); if (json.has("query")) { // single query if (json.has("type")) { - searchWithTypeMap.put("query", json); + searchWithTypeMap.put(INTERNAL_QUERY_NAME, json); } else { // user did not specify a type - searchNoTypeMap.put("query", json); + searchNoTypeMap.put(INTERNAL_QUERY_NAME, json); } } else { // multiple queries - for (Iterator iter = json.keys(); iter.hasNext();) { - ArrayList jsonList = new ArrayList(); + for (Iterator iter = json.fieldNames(); iter.hasNext();) { + ArrayList jsonList = new ArrayList(); String key = iter.next(); - Object obj = json.get(key); - JSONObject jsonLvl2 = (JSONObject) obj; + JsonNode jsonLvl2 = json.get(key); if (jsonLvl2.has("query")) { if (jsonLvl2.has("type")) { searchWithTypeMap.put(key, jsonLvl2); @@ -152,14 +162,14 @@ public class JSONReconcileServlet extends VitroHttpServlet { } } } - } catch (JSONException ex) { + } catch (IOException ex) { log.error("JSONException: " + ex); throw new ServletException("JSONReconcileServlet JSONException: " + ex); } // Run index search - JSONObject qJson = null; + ObjectNode qJson = null; if (searchWithTypeMap.size() > 0) { qJson = runSearch(searchWithTypeMap); } else { @@ -176,65 +186,60 @@ public class JSONReconcileServlet extends VitroHttpServlet { * * @param req Servlet Request * @param resp Servlet Response - * @throws ServletException */ - protected JSONObject getMetadata(HttpServletRequest req, HttpServletResponse resp, String defaultNamespace, - String defaultTypeList, String serverName, int serverPort) throws ServletException { + protected ObjectNode getMetadata(HttpServletRequest req, HttpServletResponse resp, String defaultNamespace, + String defaultTypeList, String serverName, int serverPort) throws ServletException { - JSONObject json = new JSONObject(); - try { - json.put("name", "VIVO Reconciliation Service"); - if (defaultNamespace != null) { - json.put("identifierSpace", defaultNamespace); - json.put("schemaSpace", defaultNamespace); - } - JSONObject viewJson = new JSONObject(); - StringBuffer urlBuf = new StringBuffer(); - urlBuf.append("http://" + serverName); - if (serverPort == 8080) { - urlBuf.append(":" + serverPort); - } - if (req.getContextPath() != null) { - urlBuf.append(req.getContextPath()); - } - viewJson.put("url", urlBuf.toString() + "/individual?uri={{id}}"); - json.put("view", viewJson); + ObjectNode json = JsonNodeFactory.instance.objectNode(); - // parse defaultTypeList from runtime.properties - if (defaultTypeList != null) { - String[] splitList = defaultTypeList.split(";"); - String[][] idNameArray = new String[splitList.length][splitList.length]; - for(int i = 0; i currMap) throws ServletException { - JSONObject qJson = new JSONObject(); + private ObjectNode runSearch(HashMap currMap) throws ServletException { + ObjectNode qJson = JsonNodeFactory.instance.objectNode(); try { - for (Map.Entry entry : currMap.entrySet()) { - JSONObject resultAllJson = new JSONObject(); + for (Map.Entry entry : currMap.entrySet()) { + ObjectNode resultAllJson = JsonNodeFactory.instance.objectNode(); String key = entry.getKey(); - JSONObject json = entry.getValue(); - String queryVal = json.getString("query"); + JsonNode json = entry.getValue(); + String queryVal = json.get("query").asText(); // System.out.println("query: " + json.toString()); @@ -245,32 +250,35 @@ public class JSONReconcileServlet extends VitroHttpServlet { ArrayList propertiesList = new ArrayList(); if (json.has("type")) { - searchType = json.getString("type"); + searchType = json.get("type").asText(); } if (json.has("limit")) { - limit = json.getInt("limit"); + limit = json.get("limit").asInt(); } if (json.has("type_strict")) { // Not sure what this variable // represents. Skip for now. - typeStrict = json.getString("type_strict"); + typeStrict = json.get("type_strict").asText(); } if (json.has("properties")) { - JSONArray properties = json.getJSONArray("properties"); - for (int i = 0; i < properties.length(); i++) { - String[] pvPair = new String[2]; - JSONObject jsonProperty = properties.getJSONObject(i); - String pid = jsonProperty.getString("pid"); - String v = jsonProperty.getString("v"); - if (pid != null && v != null) { - pvPair[0] = pid; - pvPair[1] = v; - propertiesList.add(pvPair); + JsonNode propertiesNode = json.get("properties"); + if (propertiesNode instanceof ArrayNode) { + ArrayNode properties = (ArrayNode)propertiesNode; + for (int i = 0; i < properties.size(); i++) { + String[] pvPair = new String[2]; + JsonNode jsonProperty = properties.get(i); + String pid = JacksonUtils.getString(jsonProperty, "pid"); + String v = JacksonUtils.getString(jsonProperty, "v"); + if (pid != null && v != null) { + pvPair[0] = pid; + pvPair[1] = v; + propertiesList.add(pvPair); + } } } } // begin search - JSONArray resultJsonArr = new JSONArray(); + ArrayNode resultJsonArr = JsonNodeFactory.instance.arrayNode(); SearchQuery query = getQuery(queryVal, searchType, limit, propertiesList); SearchResponse queryResponse = null; @@ -299,14 +307,19 @@ public class JSONReconcileServlet extends VitroHttpServlet { SearchResult result = new SearchResult(name, uri); // populate result for Google Refine - JSONObject resultJson = new JSONObject(); - resultJson.put("score", doc.getFirstValue("score")); + ObjectNode resultJson = JsonNodeFactory.instance.objectNode(); + Object score = doc.getFirstValue("score"); + if (score instanceof Double) { + resultJson.put("score", (Double)score); + } else if (score instanceof Float) { + resultJson.put("score", (Float)score); + } String modUri = result.getUri().replace("#", "%23"); resultJson.put("id", modUri); resultJson.put("name", result.getLabel()); Collection rdfTypes = doc.getFieldValues(VitroSearchTermNames.RDFTYPE); - JSONArray typesJsonArr = new JSONArray(); + ArrayNode typesJsonArr = JsonNodeFactory.instance.arrayNode(); if (rdfTypes != null) { for (Object rdfType : rdfTypes) { @@ -317,17 +330,17 @@ public class JSONReconcileServlet extends VitroHttpServlet { int lastIndex2 = type.lastIndexOf('/') + 1; String typeName = type.substring(lastIndex2); typeName = typeName.replace("#", ":"); - JSONObject typesJson = new JSONObject(); + ObjectNode typesJson = JsonNodeFactory.instance.objectNode(); typesJson.put("id", type); typesJson.put("name", typeName); - typesJsonArr.put(typesJson); + typesJsonArr.add(typesJson); } } resultJson.put("type", typesJsonArr); resultJson.put("match", "false"); - resultJsonArr.put(resultJson); + resultJsonArr.add(resultJson); } catch (Exception e) { log.error("problem getting usable individuals from search " @@ -342,16 +355,16 @@ public class JSONReconcileServlet extends VitroHttpServlet { // System.out.println("results: " + qJson.toString()); } - } catch (JSONException ex) { - log.error("JSONException: " + ex); - throw new ServletException("JSONReconcileServlet JSONException: " - + ex); } catch (SearchEngineException ex) { log.error("JSONException: " + ex); throw new ServletException("JSONReconcileServlet SearchEngineException: " + ex); } + if (qJson.has(INTERNAL_QUERY_NAME)) { + return (ObjectNode)qJson.get(INTERNAL_QUERY_NAME); + } + return qJson; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/json/JacksonUtils.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/json/JacksonUtils.java index 79835f9fc..3ebc23857 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/json/JacksonUtils.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/json/JacksonUtils.java @@ -59,6 +59,14 @@ public class JacksonUtils { return strings; } + public static String getString(JsonNode node, String name) { + if (node.has(name)) { + return node.get(name).asText(); + } + + return null; + } + public static class JacksonUtilsException extends RuntimeException { public JacksonUtilsException() { diff --git a/api/src/test/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServletTest.java b/api/src/test/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServletTest.java index 33ab77b3f..2e3b96f17 100644 --- a/api/src/test/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServletTest.java +++ b/api/src/test/java/edu/cornell/mannlib/vitro/webapp/controller/grefine/JSONReconcileServletTest.java @@ -10,8 +10,7 @@ import java.util.regex.PatternSyntaxException; import javax.servlet.ServletException; -import org.json.JSONException; -import org.json.JSONObject; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -53,14 +52,12 @@ public class JSONReconcileServletTest extends AbstractTestClass { String defaultTypeList = null; String serverName = null; String schemaSpaceOutput = null; - JSONObject jsonResult = null; + ObjectNode jsonResult = null; try { jsonResult = reconcile.getMetadata(request, response, defaultNamespace, defaultTypeList, serverName, serverPort); - schemaSpaceOutput = jsonResult.getString("schemaSpace"); + schemaSpaceOutput = jsonResult.get("schemaSpace").asText(); } catch (ServletException e) { System.err.println("JSONReconcileServletTest getMetadata ServletException: " + e); - } catch (JSONException e) { - System.err.println("JSONReconcileServletTest getMetadata JSONException: " + e); } Assert.assertNotNull("output should not be null", jsonResult); Assert.assertEquals("schemaSpaceOutput", defaultNamespace, schemaSpaceOutput); diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 048065257..7d43f6d99 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -203,11 +203,11 @@ jackson-core 2.7.4 - +