You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2023/09/01 08:56:26 UTC

[airavata-mft] 01/02: Loading resources as stream in TransportClassLoader

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

dimuthuupe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-mft.git

commit a764ea4897147858c57868f8e37bffa751833df5
Author: DImuthuUpe <di...@gmail.com>
AuthorDate: Fri Sep 1 14:13:16 2023 +0530

    Loading resources as stream in TransportClassLoader
---
 .../mft/agent/transport/TransportClassLoader.java      | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/agent/service/src/main/java/org/apache/airavata/mft/agent/transport/TransportClassLoader.java b/agent/service/src/main/java/org/apache/airavata/mft/agent/transport/TransportClassLoader.java
index bcc2e94..2f3613f 100644
--- a/agent/service/src/main/java/org/apache/airavata/mft/agent/transport/TransportClassLoader.java
+++ b/agent/service/src/main/java/org/apache/airavata/mft/agent/transport/TransportClassLoader.java
@@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.nio.file.Files;
@@ -38,7 +39,7 @@ public class TransportClassLoader extends URLClassLoader {
 
     private final ClassLoader systemClassLoader;
 
-    private final Map<String, byte[]> classes;
+    private final Map<String, byte[]> content;
 
     public Map<String, byte[]> loadClassesFromFile(final Path path) throws IOException {
         try {
@@ -65,6 +66,8 @@ public class TransportClassLoader extends URLClassLoader {
                         result.putAll(unzipRecursively(os));
                     } else if (entry.getName().toLowerCase().endsWith(".class")) {
                         result.put(entry.getName().replaceAll("/", ".").substring(0, entry.getName().length() - 6), os.toByteArray());
+                    } else {
+                        result.put(entry.getName(), os.toByteArray());
                     }
                 }
             }
@@ -76,12 +79,12 @@ public class TransportClassLoader extends URLClassLoader {
     public TransportClassLoader(URL[] urls, ClassLoader parent, Path connectorPath) throws IOException {
         super(urls, parent);
         systemClassLoader = getSystemClassLoader();
-        classes = loadClassesFromFile(connectorPath);
+        content = loadClassesFromFile(connectorPath);
     }
 
     @Override
     public final Class<?> findClass(String name) throws ClassNotFoundException {
-        final byte[] bytes = classes.get(name);
+        final byte[] bytes = content.get(name);
         if(bytes != null) {
             logger.debug("Found class {}", name);
             return defineClass(name, bytes, 0, bytes.length);
@@ -120,4 +123,13 @@ public class TransportClassLoader extends URLClassLoader {
         }
         return loadedClass;
     }
+
+    @Override
+    public InputStream getResourceAsStream(String name) {
+        if (content.containsKey(name)) {
+            return new ByteArrayInputStream(content.get(name));
+        } else {
+            return super.getResourceAsStream(name);
+        }
+    }
 }