You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by is...@apache.org on 2019/09/30 00:17:14 UTC
[lucene-solr] 03/03: Removing GSON and PF4J
This is an automated email from the ASF dual-hosted git repository.
ishan pushed a commit to branch jira/solr-13662
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit eaacbaec0dadae7a7b3563bb3a3c2c716f5fab8b
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Mon Sep 30 05:43:31 2019 +0530
Removing GSON and PF4J
---
solr/core/ivy.xml | 3 --
.../apache/solr/packagemanager/SolrPackage.java | 26 +++++------
.../solr/packagemanager/SolrPackageInstance.java | 8 ++--
.../solr/packagemanager/SolrPackageManager.java | 8 ++--
.../solr/packagemanager/SolrPackageRepository.java | 51 +++++++++++-----------
.../solr/packagemanager/SolrUpdateManager.java | 13 ++++--
.../src/java/org/apache/solr/util/PackageTool.java | 17 +++++---
7 files changed, 67 insertions(+), 59 deletions(-)
diff --git a/solr/core/ivy.xml b/solr/core/ivy.xml
index d7579c9..7805119 100644
--- a/solr/core/ivy.xml
+++ b/solr/core/ivy.xml
@@ -139,9 +139,6 @@
<dependency org="com.google.protobuf" name="protobuf-java" rev="${/com.google.protobuf/protobuf-java}" conf="compile"/>
<dependency org="com.jayway.jsonpath" name="json-path" rev="${/com.jayway.jsonpath/json-path}" conf="compile"/>
- <dependency org="org.pf4j" name="pf4j" rev="2.2.0" conf="compile"/>
- <dependency org="org.pf4j" name="pf4j-update" rev="${/org.pf4j/pf4j-update}" conf="compile"/>
- <dependency org="com.google.code.gson" name="gson" rev="2.2.4" conf="compile"/>
<dependency org="com.github.zafarkhaja" name="java-semver" rev="0.9.0" conf="compile"/>
<dependency org="org.rrd4j" name="rrd4j" rev="${/org.rrd4j/rrd4j}" conf="compile"/>
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java
index 4b02a69..2908a32 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java
@@ -5,7 +5,7 @@ import java.io.Serializable;
import java.util.Date;
import java.util.List;
-import com.google.gson.annotations.SerializedName;
+import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Describes a package (along with all released versions) as it appears in a repository.
@@ -28,7 +28,7 @@ public class SolrPackage implements Serializable, Comparable<SolrPackage> {
public String sha512sum;
public String sig;
- Metadata metadata;
+ public Metadata metadata;
@Override
public String toString() {
return "SolrPackageRelease{" +
@@ -47,27 +47,27 @@ public class SolrPackage implements Serializable, Comparable<SolrPackage> {
}
public static class Metadata {
- @SerializedName("min-solr-version")
- String minSolrVersion;
- @SerializedName("max-solr-version")
- String maxSolrVersion;
+ @JsonProperty("min-solr-version")
+ public String minSolrVersion;
+ @JsonProperty("max-solr-version")
+ public String maxSolrVersion;
- List<String> dependencies;
- List<Plugin> plugins;
+ public List<String> dependencies;
+ public List<Plugin> plugins;
}
public static class Plugin {
- String id;
- @SerializedName("setup-command")
+ public String id;
+ @JsonProperty("setup-command")
public String setupCommand;
- @SerializedName("update-command")
+ @JsonProperty("update-command")
public String updateCommand;
- @SerializedName("uninstall-command")
+ @JsonProperty("uninstall-command")
public String uninstallCommands;
- @SerializedName("verify-command")
+ @JsonProperty("verify-command")
public String verifyCommand;
@Override
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java
index c12d40d..8e01269 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java
@@ -8,10 +8,10 @@ import org.apache.solr.packagemanager.SolrPackage.Plugin;
* Describes one instance of a package as it exists in Solr when installed.
*/
public class SolrPackageInstance {
- final private String id;
- final private String description;
- final private String version;
- final private List<Plugin> plugins;
+ final public String id;
+ final public String description;
+ final public String version;
+ final public List<Plugin> plugins;
public SolrPackageInstance(String id, String description, String version,
List<Plugin> plugins) {
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageManager.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageManager.java
index bf8bfac..7128a00 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageManager.java
@@ -24,7 +24,7 @@ import org.apache.solr.packagemanager.SolrPackage.Plugin;
import org.apache.solr.packagemanager.pf4j.DefaultVersionManager;
import org.apache.solr.packagemanager.pf4j.VersionManager;
-import com.google.gson.Gson;
+import com.fasterxml.jackson.databind.ObjectMapper;
public class SolrPackageManager {
@@ -40,7 +40,7 @@ public class SolrPackageManager {
String metadataJson =
IOUtils.toString(new URL("http://localhost:8983/api/node/blob"+"/"+blobSha256).openStream(), "UTF-8");
System.out.println("Fetched metadata blob: "+metadataJson);
- Metadata metadata = new Gson().fromJson(metadataJson, Metadata.class);
+ Metadata metadata = new ObjectMapper().readValue(metadataJson, Metadata.class);
System.out.println("Now metadata: "+metadata);
return metadata;
}
@@ -51,8 +51,8 @@ public class SolrPackageManager {
packages = new HashMap<String, SolrPackageInstance>();
try {
String clusterPropsZnode = IOUtils.toString(new URL("http://localhost:8983/solr/admin/zookeeper?detail=true&path=/clusterprops.json&wt=json").openStream(), "UTF-8");
- String clusterPropsJson = ((Map)new Gson().fromJson(clusterPropsZnode, Map.class).get("znode")).get("data").toString();
- Map packagesJson = (Map)new Gson().fromJson(clusterPropsJson, Map.class).get("packages");
+ String clusterPropsJson = ((Map)new ObjectMapper().readValue(clusterPropsZnode, Map.class).get("znode")).get("data").toString();
+ Map packagesJson = (Map)new ObjectMapper().readValue(clusterPropsJson, Map.class).get("packages");
System.out.println("clusterprops are: "+clusterPropsJson);
for (Object packageName: packagesJson.keySet()) {
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageRepository.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageRepository.java
index 69b6940..8b3387e 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageRepository.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageRepository.java
@@ -1,11 +1,11 @@
package org.apache.solr.packagemanager;
+import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
-import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -14,21 +14,25 @@ import org.apache.solr.packagemanager.pf4j.CompoundVerifier;
import org.apache.solr.packagemanager.pf4j.DefaultUpdateRepository;
import org.apache.solr.packagemanager.pf4j.FileDownloader;
import org.apache.solr.packagemanager.pf4j.FileVerifier;
-import org.apache.solr.packagemanager.pf4j.LenientDateTypeAdapter;
import org.apache.solr.packagemanager.pf4j.SimpleFileDownloader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.annotations.Expose;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
public class SolrPackageRepository {
private static final Logger log = LoggerFactory.getLogger(DefaultUpdateRepository.class);
- private String id;
- private String url;
-
+ @JsonProperty("id")
+ public String id;
+ @JsonProperty("url")
+ public String url;
+
+ public SolrPackageRepository() {
+ }//nocommit wtf?
+
public SolrPackageRepository(String id, String url) {
this.id = id;
this.url = url;
@@ -38,24 +42,17 @@ public class SolrPackageRepository {
packages = null;
}
-
+ @JsonIgnore
public FileDownloader getFileDownloader() {
return new SimpleFileDownloader();
}
+ @JsonIgnore
public FileVerifier getFileVerfier() {
return new CompoundVerifier();
}
- public String getId() {
- return id;
- }
-
- public String getUrl() {
- return url;
- }
-
- @Expose(serialize = false, deserialize = true)
+ @JsonIgnore
private Map<String, SolrPackage> packages;
public Map<String, SolrPackage> getPackages() {
@@ -74,7 +71,7 @@ public class SolrPackageRepository {
Reader pluginsJsonReader;
try {
URL pluginsUrl = new URL(new URL(url), "manifest.json"); //nocommit hardcoded
- log.debug("Read plugins of '{}' repository from '{}'", getId(), pluginsUrl);
+ log.debug("Read plugins of '{}' repository from '{}'", id, pluginsUrl);
pluginsJsonReader = new InputStreamReader(pluginsUrl.openStream());
} catch (Exception e) {
log.error(e.getMessage(), e);
@@ -82,9 +79,13 @@ public class SolrPackageRepository {
return;
}
- Gson gson = new GsonBuilder().
- registerTypeAdapter(Date.class, new LenientDateTypeAdapter()).create();
- SolrPackage[] items = gson.fromJson(pluginsJsonReader, SolrPackage[].class);
+ ObjectMapper mapper = new ObjectMapper();
+ SolrPackage items[];
+ try {
+ items = mapper.readValue(pluginsJsonReader, SolrPackage[].class);
+ } catch (IOException e1) {
+ throw new RuntimeException(e1);
+ }
packages = new HashMap<>(items.length);
for (SolrPackage p : items) {
for (SolrPackageRelease r : p.versions) {
@@ -94,14 +95,14 @@ public class SolrPackageRepository {
log.warn("Illegal release date when parsing {}@{}, setting to epoch", p.id, r.version);
}
} catch (MalformedURLException e) {
- log.warn("Skipping release {} of plugin {} due to failure to build valid absolute URL. Url was {}{}", r.version, p.id, getUrl(), r.url);
+ log.warn("Skipping release {} of plugin {} due to failure to build valid absolute URL. Url was {}{}", r.version, p.id, url, r.url);
}
}
- p.setRepositoryId(getId());
+ p.setRepositoryId(id);
packages.put(p.id, p);
System.out.println("****\n"+p+"\n*******");
}
- log.debug("Found {} plugins in repository '{}'", packages.size(), getId());
+ log.debug("Found {} plugins in repository '{}'", packages.size(), id);
}
}
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java
index 6b31bf9..2db8c4e 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java
@@ -36,7 +36,7 @@ import org.apache.solr.packagemanager.pf4j.VersionManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
+import com.fasterxml.jackson.databind.ObjectMapper;
public class SolrUpdateManager {
@@ -59,7 +59,12 @@ public class SolrUpdateManager {
}
protected synchronized void initRepositoriesFromJson() {
- SolrPackageRepository items[] = new Gson().fromJson(this.repositoriesJsonStr, SolrPackageRepository[].class);
+ SolrPackageRepository items[];
+ try {
+ items = new ObjectMapper().readValue(this.repositoriesJsonStr, SolrPackageRepository[].class);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
this.repositories = Arrays.asList(items);
}
@@ -130,7 +135,7 @@ public class SolrUpdateManager {
String sha256 = uploadToBlobHandler(downloaded);
String metadataSha256;
try {
- metadataSha256 = uploadToBlobHandler(new Gson().toJson(release.metadata));
+ metadataSha256 = uploadToBlobHandler(new ObjectMapper().writeValueAsString(release.metadata));
} catch (IOException e) {
throw new PluginException(e);
}
@@ -211,7 +216,7 @@ public class SolrUpdateManager {
IOUtils.copy(is, writer, "UTF-8");
String results = writer.toString();
System.out.println(results);
- String sha = new Gson().fromJson(results, Map.class).get("sha256").toString();
+ String sha = new ObjectMapper().readValue(results, Map.class).get("sha256").toString();
//System.out.println("SHA: "+sha);
return sha;
}
diff --git a/solr/core/src/java/org/apache/solr/util/PackageTool.java b/solr/core/src/java/org/apache/solr/util/PackageTool.java
index c845fe8..ceddba1 100644
--- a/solr/core/src/java/org/apache/solr/util/PackageTool.java
+++ b/solr/core/src/java/org/apache/solr/util/PackageTool.java
@@ -29,20 +29,22 @@ import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.io.IOUtils;
import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.core.config.Configurator;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.packagemanager.SolrPackageRepository;
-import org.apache.solr.packagemanager.SolrPackageInstance;
import org.apache.solr.packagemanager.SolrPackage;
import org.apache.solr.packagemanager.SolrPackage.SolrPackageRelease;
+import org.apache.solr.packagemanager.SolrPackageInstance;
import org.apache.solr.packagemanager.SolrPackageManager;
+import org.apache.solr.packagemanager.SolrPackageRepository;
import org.apache.solr.packagemanager.SolrUpdateManager;
import org.apache.solr.packagemanager.pf4j.PluginException;
import org.apache.solr.util.SolrCLI.StatusTool;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
-import com.google.gson.Gson;
+import com.fasterxml.jackson.databind.ObjectMapper;
public class PackageTool extends SolrCLI.ToolBase {
@@ -54,6 +56,9 @@ public class PackageTool extends SolrCLI.ToolBase {
@Override
protected void runImpl(CommandLine cli) throws Exception {
+ // Need a logging free, clean output going through to the user.
+ Configurator.setRootLevel(Level.OFF);
+
String zkHost = getZkHost(cli);
String cmd = cli.getArgs()[0];
@@ -106,12 +111,12 @@ public class PackageTool extends SolrCLI.ToolBase {
String existingRepositoriesJson = getRepositoriesJson(zkClient);
System.out.println(existingRepositoriesJson);
- List repos = new Gson().fromJson(existingRepositoriesJson, List.class);
+ List repos = new ObjectMapper().readValue(existingRepositoriesJson, List.class);
repos.add(new SolrPackageRepository(name, uri));
if (zkClient.exists("/repositories.json", true) == false) {
- zkClient.create("/repositories.json", new Gson().toJson(repos).getBytes(), CreateMode.PERSISTENT, true);
+ zkClient.create("/repositories.json", new ObjectMapper().writeValueAsString(repos).getBytes(), CreateMode.PERSISTENT, true);
} else {
- zkClient.setData("/repositories.json", new Gson().toJson(repos).getBytes(), true);
+ zkClient.setData("/repositories.json", new ObjectMapper().writeValueAsString(repos).getBytes(), true);
}
if (zkClient.exists("/keys", true)==false) zkClient.create("/keys", new byte[0], CreateMode.PERSISTENT, true);