protected ClassLoader buildClassloader()

in src/main/java/com/epam/gmp/service/GroovyScriptEngineService.java [116:147]


    protected ClassLoader buildClassloader(org.springframework.core.io.Resource scriptPath) {
        ClassLoader scriptClassLoader = null;

        org.springframework.core.io.Resource libPath;
        try {
            libPath = scriptPath.createRelative(LIB_FOLDER);
            if (libPath.exists()) {
                ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
                org.springframework.core.io.Resource[] jarResources = resolver.getResources(libPath.getURL() + "/*.jar");
                List<URL> urls = new ArrayList<>();
                for (org.springframework.core.io.Resource resource : jarResources) {
                    try {
                        urls.add(resource.getURL());
                    } catch (IOException ex) {
                        if (logger.isWarnEnabled()) {
                            logger.warn("Unable to resolve url for " + resource, ex);
                        }
                    }
                }
                URL[] aUrls = new URL[urls.size()];
                scriptClassLoader = new ScriptClassloader(urls.toArray(aUrls), Thread.currentThread().getContextClassLoader());
            } else {
                scriptClassLoader = new ScriptClassloader(new URL[0], Thread.currentThread().getContextClassLoader());
            }

        } catch (IOException e) {
            if (logger.isErrorEnabled()) {
                logger.error("unable to create relative LIB path.");
            }
        }
        return scriptClassLoader;
    }