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);