From 2140e2bf76a19713c4597abc138604c420bfb2e6 Mon Sep 17 00:00:00 2001 From: Anton Keks Date: Sun, 16 Jan 2022 17:24:43 +0200 Subject: [PATCH] separate non-gui and gui registries to make tests run on mac --- .../azib/ipscan/config/ComponentRegistry.java | 35 ++++++------------- src/net/azib/ipscan/config/ConfigModule.java | 1 - src/net/azib/ipscan/config/GUIRegistry.java | 33 +++++++++++++++++ .../ipscan/core/net/AbstractPingerTest.java | 2 +- 4 files changed, 44 insertions(+), 27 deletions(-) create mode 100644 src/net/azib/ipscan/config/GUIRegistry.java diff --git a/src/net/azib/ipscan/config/ComponentRegistry.java b/src/net/azib/ipscan/config/ComponentRegistry.java index 04e85b68..32b0b625 100644 --- a/src/net/azib/ipscan/config/ComponentRegistry.java +++ b/src/net/azib/ipscan/config/ComponentRegistry.java @@ -6,21 +6,12 @@ package net.azib.ipscan.config; import net.azib.ipscan.core.PluginLoader; -import net.azib.ipscan.core.state.StateMachine; import net.azib.ipscan.di.Injector; import net.azib.ipscan.exporters.CSVExporter; import net.azib.ipscan.exporters.IPListExporter; import net.azib.ipscan.exporters.TXTExporter; import net.azib.ipscan.exporters.XMLExporter; -import net.azib.ipscan.feeders.FeederRegistry; import net.azib.ipscan.fetchers.*; -import net.azib.ipscan.gui.SWTAwareStateMachine; -import net.azib.ipscan.gui.feeders.*; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Shell; /** * This class is the dependency injection configuration @@ -28,33 +19,27 @@ import org.eclipse.swt.widgets.Shell; * @author Anton Keks */ public class ComponentRegistry { - public void register(Injector i) throws Exception { - Display display = Display.getDefault(); - i.register(Display.class, display); - Shell shell = new Shell(); - i.register(Shell.class, shell); - i.register(Menu.class, new Menu(shell, SWT.BAR)); - i.register(FeederSelectionCombo.class, new FeederSelectionCombo(i.require(ControlsArea.class))); - i.register(Button.class, new Button(i.require(ControlsArea.class), SWT.NONE)); - SWTAwareStateMachine stateMachine = new SWTAwareStateMachine(display); - i.register(SWTAwareStateMachine.class, stateMachine); - i.register(StateMachine.class, stateMachine); - i.register(RangeFeederGUI.class, RandomFeederGUI.class, FileFeederGUI.class); - i.register(TXTExporter.class, CSVExporter.class, XMLExporter.class, IPListExporter.class); - + public void register(Injector i) throws InstantiationException, IllegalAccessException, ClassNotFoundException { i.register(IPFetcher.class, PingFetcher.class, PingTTLFetcher.class, HostnameFetcher.class, PortsFetcher.class); i.register(MACFetcher.class, (MACFetcher) Class.forName(MACFetcher.class.getPackage().getName() + (Platform.WINDOWS ? ".WinMACFetcher" : Platform.LINUX ? ".LinuxMACFetcher" : ".UnixMACFetcher")).newInstance()); i.register(CommentFetcher.class, FilteredPortsFetcher.class, WebDetectFetcher.class, HTTPSenderFetcher.class, NetBIOSInfoFetcher.class, PacketLossFetcher.class, HTTPProxyFetcher.class, MACVendorFetcher.class); - i.register(FeederRegistry.class, i.require(FeederGUIRegistry.class)); + i.register(TXTExporter.class, CSVExporter.class, XMLExporter.class, IPListExporter.class); } public Injector init() throws Exception { + return init(true); + } + + public Injector init(boolean withGUI) throws Exception { Injector i = new Injector(); new ConfigModule().register(i); new ComponentRegistry().register(i); - new PluginLoader().getClasses().forEach(i::require); + if (withGUI) { + new GUIRegistry().register(i); + new PluginLoader().getClasses().forEach(i::require); + } return i; } } diff --git a/src/net/azib/ipscan/config/ConfigModule.java b/src/net/azib/ipscan/config/ConfigModule.java index 3f4394f5..726fcbf4 100644 --- a/src/net/azib/ipscan/config/ConfigModule.java +++ b/src/net/azib/ipscan/config/ConfigModule.java @@ -13,6 +13,5 @@ public class ConfigModule { i.register(ScannerConfig.class, config.forScanner()); i.register(OpenersConfig.class, config.forOpeners()); i.register(FavoritesConfig.class, config.forFavorites()); - i.register(GUIConfig.class, config.forGUI()); } } diff --git a/src/net/azib/ipscan/config/GUIRegistry.java b/src/net/azib/ipscan/config/GUIRegistry.java new file mode 100644 index 00000000..27cb53df --- /dev/null +++ b/src/net/azib/ipscan/config/GUIRegistry.java @@ -0,0 +1,33 @@ +package net.azib.ipscan.config; + +import net.azib.ipscan.core.state.StateMachine; +import net.azib.ipscan.di.Injector; +import net.azib.ipscan.feeders.FeederRegistry; +import net.azib.ipscan.gui.SWTAwareStateMachine; +import net.azib.ipscan.gui.feeders.*; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; + +public class GUIRegistry { + public void register(Injector i) { + Display display = Display.getDefault(); + i.register(Display.class, display); + i.register(GUIConfig.class, Config.getConfig().forGUI()); + + Shell shell = new Shell(); + i.register(Shell.class, shell); + i.register(Menu.class, new Menu(shell, SWT.BAR)); + i.register(FeederSelectionCombo.class, new FeederSelectionCombo(i.require(ControlsArea.class))); + i.register(Button.class, new Button(i.require(ControlsArea.class), SWT.NONE)); + + SWTAwareStateMachine stateMachine = new SWTAwareStateMachine(display); + i.register(SWTAwareStateMachine.class, stateMachine); + i.register(StateMachine.class, stateMachine); + i.register(RangeFeederGUI.class, RandomFeederGUI.class, FileFeederGUI.class); + + i.register(FeederRegistry.class, i.require(FeederGUIRegistry.class)); + } +} diff --git a/test/net/azib/ipscan/core/net/AbstractPingerTest.java b/test/net/azib/ipscan/core/net/AbstractPingerTest.java index d869eba3..22129de5 100644 --- a/test/net/azib/ipscan/core/net/AbstractPingerTest.java +++ b/test/net/azib/ipscan/core/net/AbstractPingerTest.java @@ -17,7 +17,7 @@ abstract class AbstractPingerTest { Pinger pinger; AbstractPingerTest(Class pingerClass) throws Exception { - Injector injector = new ComponentRegistry().init(); + Injector injector = new ComponentRegistry().init(false); this.pinger = injector.require(pingerClass); }