package org.ngrinder.infra.plugin.extension;
import java.net.MalformedURLException;
import org.ngrinder.infra.config.Config;
import org.ngrinder.infra.plugin.finder.NGrinderPluginClasspath;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import ro.fortsoft.pf4j.DefaultPluginManager;
import ro.fortsoft.pf4j.DefaultPluginRepository;
import ro.fortsoft.pf4j.DevelopmentPluginClasspath;
import ro.fortsoft.pf4j.ExtensionFactory;
import ro.fortsoft.pf4j.ExtensionFinder;
import ro.fortsoft.pf4j.PluginClasspath;
import ro.fortsoft.pf4j.RuntimeMode;
import ro.fortsoft.pf4j.spring.SpringExtensionFactory;
import ro.fortsoft.pf4j.util.JarFileFilter;
/**
* DefaultPluginManager extended class.
*
* @author Gisoo Gwon ,GeunWoo Son
* @see https://github.com/decebals/pf4j
* @since 3.0
*/
@Component
public class NGrinderDefaultPluginManager extends DefaultPluginManager {
@Autowired
public NGrinderDefaultPluginManager(Config config, ApplicationContext applicationContext) throws MalformedURLException {
super(config.isClustered() ? config.getExHome().getPluginsCacheDirectory() : config.getHome().getPluginsCacheDirectory());
super.pluginRepository = new DefaultPluginRepository(config.getHome().getPluginsDirectory(), new JarFileFilter());
}
@Autowired
public void setExtensionFinder(ExtensionFinder extensionFinder) {
super.extensionFinder = extensionFinder;
}
@Autowired
public void setSpringExtensionFactory(SpringExtensionFactory extensionFactory) {
super.extensionFactory = extensionFactory;
}
@Override
protected PluginClasspath createPluginClasspath() {
return new NGrinderPluginClasspath();
}
@Override
protected ExtensionFactory createExtensionFactory() {
// Disable the default Factory
return null;
}
@Override
protected ExtensionFinder createExtensionFinder() {
// Disable the default finder
return null;
}
}