mirror of
https://github.com/angryip/ipscan.git
synced 2025-10-26 11:18:17 +00:00
plugins can now be specified using system property ipscan.plugins
This commit is contained in:
parent
e69c0050e9
commit
ef0c7f9b23
Binary file not shown.
BIN
ext/mockito/mockito-all.jar
Normal file
BIN
ext/mockito/mockito-all.jar
Normal file
Binary file not shown.
@ -12,6 +12,7 @@ import net.azib.ipscan.core.ScannerDispatcherThreadFactory;
|
||||
import net.azib.ipscan.core.ScanningResultList;
|
||||
import net.azib.ipscan.core.net.PingerRegistry;
|
||||
import net.azib.ipscan.core.net.PingerRegistryImpl;
|
||||
import net.azib.ipscan.core.plugins.PluginLoader;
|
||||
import net.azib.ipscan.exporters.CSVExporter;
|
||||
import net.azib.ipscan.exporters.ExporterRegistry;
|
||||
import net.azib.ipscan.exporters.IPListExporter;
|
||||
@ -195,6 +196,8 @@ public class ComponentRegistry {
|
||||
Logger.getLogger(getClass().getName()).warning("Cannot initialize MacApplicationMenu: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
new PluginLoader().addTo(container);
|
||||
}
|
||||
|
||||
private void start() {
|
||||
|
||||
26
src/net/azib/ipscan/core/plugins/PluginLoader.java
Normal file
26
src/net/azib/ipscan/core/plugins/PluginLoader.java
Normal file
@ -0,0 +1,26 @@
|
||||
package net.azib.ipscan.core.plugins;
|
||||
|
||||
import net.azib.ipscan.config.LoggerFactory;
|
||||
import org.picocontainer.MutablePicoContainer;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class PluginLoader {
|
||||
static final Logger LOG = LoggerFactory.getLogger();
|
||||
|
||||
public void addTo(MutablePicoContainer container) {
|
||||
String plugins = System.getProperty("ipscan.plugins");
|
||||
if (plugins != null) {
|
||||
String[] classes = plugins.split("\\s*,\\s*");
|
||||
for (String className : classes) {
|
||||
try {
|
||||
Class clazz = Class.forName(className);
|
||||
container.registerComponentImplementation(clazz);
|
||||
}
|
||||
catch (ClassNotFoundException e) {
|
||||
LOG.warning("Unable to load plugin: " + className);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
28
test/net/azib/ipscan/core/plugins/PluginLoaderTest.java
Normal file
28
test/net/azib/ipscan/core/plugins/PluginLoaderTest.java
Normal file
@ -0,0 +1,28 @@
|
||||
package net.azib.ipscan.core.plugins;
|
||||
|
||||
import net.azib.ipscan.core.ScanningSubject;
|
||||
import net.azib.ipscan.fetchers.AbstractFetcher;
|
||||
import org.junit.Test;
|
||||
import org.picocontainer.MutablePicoContainer;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
public class PluginLoaderTest {
|
||||
@Test
|
||||
public void loadFromSystemProperty() {
|
||||
System.setProperty("ipscan.plugins", DummyFetcher.class.getName());
|
||||
MutablePicoContainer container = mock(MutablePicoContainer.class);
|
||||
new PluginLoader().addTo(container);
|
||||
verify(container).registerComponentImplementation(DummyFetcher.class);
|
||||
}
|
||||
|
||||
public static class DummyFetcher extends AbstractFetcher {
|
||||
public Object scan(ScanningSubject subject) {
|
||||
return "dummy";
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return "dummy";
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user