You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2020/06/29 04:09:03 UTC

[lucene-solr] branch master updated: SOLR-14481: use classloader to open resource

This is an automated email from the ASF dual-hosted git repository.

noble pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new d883cd6  SOLR-14481: use classloader to open resource
d883cd6 is described below

commit d883cd69fc2884352e0a363b98e3d5a37142dd52
Author: noble <no...@apache.org>
AuthorDate: Mon Jun 29 14:03:17 2020 +1000

    SOLR-14481: use classloader to open resource
---
 .../java/org/apache/solr/pkg/PackageLoader.java    | 58 ++++------------------
 .../apache/solr/handler/TestContainerPlugin.java   |  8 +--
 2 files changed, 15 insertions(+), 51 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
index 63e801e..562f8a0 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
@@ -18,27 +18,28 @@
 package org.apache.solr.pkg;
 
 import java.io.Closeable;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
-import java.nio.ByteBuffer;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.function.Supplier;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
 
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.util.SimplePostTool;
-import org.apache.zookeeper.server.ByteBufferInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -343,45 +344,8 @@ public class PackageLoader implements Closeable {
     }
 
     @Override
-    public InputStream openResource(String resource) throws IOException {
-      for (Path path : paths) {
-        try(FileInputStream in = new FileInputStream(path.toFile())) {
-          ZipInputStream zis = new ZipInputStream(in);
-          try {
-            ZipEntry entry;
-            while ((entry = zis.getNextEntry()) != null) {
-              if (resource == null || resource.equals(entry.getName())) {
-                SimplePostTool.BAOS out = new SimplePostTool.BAOS();
-                byte[] buffer = new byte[2048];
-                int size;
-                while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
-                  out.write(buffer, 0, size);
-                }
-                out.close();
-                return new ByteBufferStream(out.getByteBuffer());
-              }
-            }
-          } finally {
-            zis.closeEntry();
-          }
-        }
-      }
-
-      return null;
-    }
-  }
-
-  private static class ByteBufferStream extends ByteBufferInputStream implements Supplier<ByteBuffer> {
-    private final ByteBuffer buf ;
-
-    public ByteBufferStream(ByteBuffer buf) {
-      super(buf);
-      this.buf = buf;
-    }
-
-    @Override
-    public ByteBuffer get() {
-      return buf;
+    public InputStream openResource(String resource) {
+      return getClassLoader().getResourceAsStream(resource);
     }
   }
 
diff --git a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index dea3eb6..d137b10 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -22,9 +22,9 @@ import java.io.InputStream;
 import java.nio.ByteBuffer;
 import java.util.Map;
 import java.util.concurrent.Callable;
-import java.util.function.Supplier;
 
 import com.google.common.collect.ImmutableMap;
+import org.apache.commons.io.IOUtils;
 import org.apache.lucene.analysis.util.ResourceLoader;
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.solr.api.Command;
@@ -270,9 +270,9 @@ public class TestContainerPlugin extends SolrCloudTestCase {
       this.resourceLoader = (SolrResourceLoader) loader;
       try {
         InputStream is = resourceLoader.openResource("org/apache/solr/handler/MyPlugin.class");
-        if (is instanceof Supplier) {
-          classData = ((Supplier<ByteBuffer>) is).get();
-        }
+        byte[] buf = new byte[1024*5];
+        int sz = IOUtils.read(is, buf);
+        classData = ByteBuffer.wrap(buf, 0,sz);
       } catch (IOException e) {
         //do not do anything
       }