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