From 69c4f5460c2acc52fb24b4f21da0a15a7aca8ab0 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 29 Sep 2017 00:54:14 +0100 Subject: [PATCH] Convert TPF from Gson to Jackson --- .../config/ConfigReader.java | 53 ++++++++++++------- .../datasource/DataSourceFactory.java | 12 ++--- .../datasource/IDataSourceType.java | 4 +- .../datasource/tdb/JenaTDBDataSourceType.java | 6 +-- .../servlet/LinkedDataFragmentServlet.java | 4 +- .../rdfservice/RDFServiceDataSourceType.java | 4 +- .../VitroLinkedDataFragmentServlet.java | 4 +- 7 files changed, 52 insertions(+), 35 deletions(-) diff --git a/api/src/main/java/org/linkeddatafragments/config/ConfigReader.java b/api/src/main/java/org/linkeddatafragments/config/ConfigReader.java index 3db1d638f..3398965f0 100644 --- a/api/src/main/java/org/linkeddatafragments/config/ConfigReader.java +++ b/api/src/main/java/org/linkeddatafragments/config/ConfigReader.java @@ -1,12 +1,14 @@ package org.linkeddatafragments.config; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.linkeddatafragments.datasource.IDataSourceType; +import java.io.IOException; import java.io.Reader; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; @@ -18,7 +20,7 @@ import java.util.Map.Entry; */ public class ConfigReader { private final Map dataSourceTypes = new HashMap<>(); - private final Map dataSources = new HashMap<>(); + private final Map dataSources = new HashMap<>(); private final Map prefixes = new HashMap<>(); private final String baseURL; @@ -28,19 +30,34 @@ public class ConfigReader { * @param configReader the configuration */ public ConfigReader(Reader configReader) { - JsonObject root = new JsonParser().parse(configReader).getAsJsonObject(); - this.baseURL = root.has("baseURL") ? root.getAsJsonPrimitive("baseURL").getAsString() : null; - - for (Entry entry : root.getAsJsonObject("datasourcetypes").entrySet()) { - final String className = entry.getValue().getAsString(); - dataSourceTypes.put(entry.getKey(), initDataSouceType(className) ); - } - for (Entry entry : root.getAsJsonObject("datasources").entrySet()) { - JsonObject dataSource = entry.getValue().getAsJsonObject(); - this.dataSources.put(entry.getKey(), dataSource); - } - for (Entry entry : root.getAsJsonObject("prefixes").entrySet()) { - this.prefixes.put(entry.getKey(), entry.getValue().getAsString()); + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = null; + try { + root = mapper.readTree(configReader); + this.baseURL = root.has("baseURL") ? root.get("baseURL").asText() : null; + + Iterator> iterator; + + iterator = root.get("datasourcetypes").fields(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + final String className = entry.getValue().asText(); + dataSourceTypes.put(entry.getKey(), initDataSouceType(className) ); + } + + iterator = root.get("datasources").fields(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + this.dataSources.put(entry.getKey(), entry.getValue()); + } + + iterator = root.get("prefixes").fields(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + this.prefixes.put(entry.getKey(), entry.getValue().asText()); + } + } catch (IOException e) { + throw new RuntimeException(e); } } @@ -58,7 +75,7 @@ public class ConfigReader { * * @return the data sources */ - public Map getDataSources() { + public Map getDataSources() { return dataSources; } diff --git a/api/src/main/java/org/linkeddatafragments/datasource/DataSourceFactory.java b/api/src/main/java/org/linkeddatafragments/datasource/DataSourceFactory.java index d23741d54..933cb707e 100644 --- a/api/src/main/java/org/linkeddatafragments/datasource/DataSourceFactory.java +++ b/api/src/main/java/org/linkeddatafragments/datasource/DataSourceFactory.java @@ -1,6 +1,6 @@ package org.linkeddatafragments.datasource; -import com.google.gson.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import org.linkeddatafragments.exceptions.DataSourceCreationException; import org.linkeddatafragments.exceptions.UnknownDataSourceTypeException; @@ -18,12 +18,12 @@ public class DataSourceFactory { * @return datasource interface * @throws DataSourceCreationException */ - public static IDataSource create(JsonObject config) throws DataSourceCreationException { - String title = config.getAsJsonPrimitive("title").getAsString(); - String description = config.getAsJsonPrimitive("description").getAsString(); - String typeName = config.getAsJsonPrimitive("type").getAsString(); + public static IDataSource create(JsonNode config) throws DataSourceCreationException { + String title = config.get("title").asText(); + String description = config.get("description").asText(); + String typeName = config.get("type").asText(); - JsonObject settings = config.getAsJsonObject("settings"); + JsonNode settings = config.get("settings"); final IDataSourceType type = DataSourceTypesRegistry.getType(typeName); if ( type == null ) diff --git a/api/src/main/java/org/linkeddatafragments/datasource/IDataSourceType.java b/api/src/main/java/org/linkeddatafragments/datasource/IDataSourceType.java index b9a19f760..18a265ec4 100644 --- a/api/src/main/java/org/linkeddatafragments/datasource/IDataSourceType.java +++ b/api/src/main/java/org/linkeddatafragments/datasource/IDataSourceType.java @@ -1,6 +1,6 @@ package org.linkeddatafragments.datasource; -import com.google.gson.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import org.linkeddatafragments.exceptions.DataSourceCreationException; /** @@ -28,6 +28,6 @@ public interface IDataSourceType */ IDataSource createDataSource(final String title, final String description, - final JsonObject settings) + final JsonNode settings) throws DataSourceCreationException; } diff --git a/api/src/main/java/org/linkeddatafragments/datasource/tdb/JenaTDBDataSourceType.java b/api/src/main/java/org/linkeddatafragments/datasource/tdb/JenaTDBDataSourceType.java index bbebca71f..0c0f764c3 100644 --- a/api/src/main/java/org/linkeddatafragments/datasource/tdb/JenaTDBDataSourceType.java +++ b/api/src/main/java/org/linkeddatafragments/datasource/tdb/JenaTDBDataSourceType.java @@ -1,6 +1,6 @@ package org.linkeddatafragments.datasource.tdb; -import com.google.gson.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import org.linkeddatafragments.datasource.IDataSource; import org.linkeddatafragments.datasource.IDataSourceType; import org.linkeddatafragments.exceptions.DataSourceCreationException; @@ -18,10 +18,10 @@ public class JenaTDBDataSourceType implements IDataSourceType @Override public IDataSource createDataSource( final String title, final String description, - final JsonObject settings ) + final JsonNode settings ) throws DataSourceCreationException { - final String dname = settings.getAsJsonPrimitive("directory").getAsString(); + final String dname = settings.get("directory").asText(); final File dir = new File( dname ); try { diff --git a/api/src/main/java/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java b/api/src/main/java/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java index 881dd4fd5..3e7a27430 100644 --- a/api/src/main/java/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java +++ b/api/src/main/java/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java @@ -1,6 +1,6 @@ package org.linkeddatafragments.servlet; -import com.google.gson.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import org.apache.jena.riot.Lang; import org.linkeddatafragments.config.ConfigReader; import org.linkeddatafragments.datasource.DataSourceFactory; @@ -89,7 +89,7 @@ public class LinkedDataFragmentServlet extends HttpServlet { } // register data sources - for (Entry dataSource : config.getDataSources().entrySet()) { + for (Entry dataSource : config.getDataSources().entrySet()) { dataSources.put(dataSource.getKey(), DataSourceFactory.create(dataSource.getValue())); } diff --git a/api/src/main/java/org/vivoweb/linkeddatafragments/datasource/rdfservice/RDFServiceDataSourceType.java b/api/src/main/java/org/vivoweb/linkeddatafragments/datasource/rdfservice/RDFServiceDataSourceType.java index 0e8323cdb..8ebb629aa 100644 --- a/api/src/main/java/org/vivoweb/linkeddatafragments/datasource/rdfservice/RDFServiceDataSourceType.java +++ b/api/src/main/java/org/vivoweb/linkeddatafragments/datasource/rdfservice/RDFServiceDataSourceType.java @@ -1,6 +1,6 @@ package org.vivoweb.linkeddatafragments.datasource.rdfservice; -import com.google.gson.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import org.linkeddatafragments.datasource.IDataSource; import org.linkeddatafragments.datasource.IDataSourceType; import org.linkeddatafragments.exceptions.DataSourceCreationException; @@ -16,7 +16,7 @@ public class RDFServiceDataSourceType implements IDataSourceType @Override public IDataSource createDataSource( final String title, final String description, - final JsonObject settings ) + final JsonNode settings ) throws DataSourceCreationException { try { diff --git a/api/src/main/java/org/vivoweb/linkeddatafragments/servlet/VitroLinkedDataFragmentServlet.java b/api/src/main/java/org/vivoweb/linkeddatafragments/servlet/VitroLinkedDataFragmentServlet.java index 2323436ee..7f5f7dddf 100644 --- a/api/src/main/java/org/vivoweb/linkeddatafragments/servlet/VitroLinkedDataFragmentServlet.java +++ b/api/src/main/java/org/vivoweb/linkeddatafragments/servlet/VitroLinkedDataFragmentServlet.java @@ -1,6 +1,6 @@ package org.vivoweb.linkeddatafragments.servlet; -import com.google.gson.JsonObject; +import com.fasterxml.jackson.databind.JsonNode; import edu.cornell.mannlib.vitro.webapp.beans.Ontology; import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao; @@ -90,7 +90,7 @@ public class VitroLinkedDataFragmentServlet extends VitroHttpServlet { } // register data sources - for (Entry dataSource : config.getDataSources().entrySet()) { + for (Entry dataSource : config.getDataSources().entrySet()) { dataSources.put(dataSource.getKey(), DataSourceFactory.create(dataSource.getValue())); }