use List instead of arrays for feeders/fetchers/exporters - it will be easier to add plugins that way

This commit is contained in:
Anton Keks 2015-08-14 01:38:06 +03:00
parent d82481f601
commit d07cbd866a
7 changed files with 31 additions and 27 deletions

View File

@ -19,6 +19,7 @@ import org.eclipse.swt.widgets.*;
import org.picocontainer.MutablePicoContainer;
import javax.inject.Named;
import java.util.Arrays;
import java.util.List;
/**
@ -66,18 +67,18 @@ public class ComponentRegistry {
return feederRegistry;
}
@Provides public AbstractFeederGUI[] feeders(RangeFeederGUI f1, RandomFeederGUI f2, FileFeederGUI f3) {
return new AbstractFeederGUI[] {f1, f2, f3};
@Provides public List<AbstractFeederGUI> feeders(RangeFeederGUI f1, RandomFeederGUI f2, FileFeederGUI f3) {
return Arrays.asList(f1, f2, f3);
}
@Provides public Exporter[] exporters(TXTExporter e1, CSVExporter e2, XMLExporter e3, IPListExporter e4) {
return new Exporter[] {e1, e2, e3, e4};
@Provides public List<Exporter> exporters(TXTExporter e1, CSVExporter e2, XMLExporter e3, IPListExporter e4) {
return Arrays.<Exporter>asList(e1, e2, e3, e4);
}
@Provides public Fetcher[] fetchers(IPFetcher f1, PingFetcher f2, PingTTLFetcher f3, HostnameFetcher f4, PortsFetcher f5,
@Provides public List<Fetcher> fetchers(IPFetcher f1, PingFetcher f2, PingTTLFetcher f3, HostnameFetcher f4, PortsFetcher f5,
FilteredPortsFetcher f6, WebDetectFetcher f7, HTTPSenderFetcher f8, CommentFetcher f9,
NetBIOSInfoFetcher f10, MACFetcher f11, MACVendorFetcher f12) {
return new Fetcher[] {f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12};
return Arrays.<Fetcher>asList(f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12);
}
@Provides MACFetcher selectMacFetcher() {

View File

@ -8,6 +8,7 @@ package net.azib.ipscan.exporters;
import javax.inject.Inject;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
@ -22,7 +23,7 @@ public class ExporterRegistry implements Iterable<Exporter> {
private Map<String, Exporter> exporters;
@Inject
public ExporterRegistry(Exporter[] registeredExporters) {
public ExporterRegistry(List<Exporter> registeredExporters) {
exporters = new LinkedHashMap<String, Exporter>();
for (Exporter exporter : registeredExporters) {

View File

@ -36,11 +36,11 @@ public class FetcherRegistry {
/** A collection of update listeners - observers of FetcherRegistry */
private List<FetcherRegistryUpdateListener> updateListeners = new ArrayList<FetcherRegistryUpdateListener>();
@Inject public FetcherRegistry(Fetcher[] registeredFetchers, Preferences preferences) {
@Inject public FetcherRegistry(List<Fetcher> registeredFetchers, Preferences preferences) {
this.preferences = preferences;
MutablePicoContainer prefsContainer = new DefaultPicoContainer();
this.registeredFetchers = new LinkedHashMap<String, Fetcher>(registeredFetchers.length);
this.registeredFetchers = new LinkedHashMap<String, Fetcher>(registeredFetchers.size());
for (Fetcher fetcher : registeredFetchers) {
this.registeredFetchers.put(fetcher.getId(), fetcher);
Class<? extends FetcherPrefs> prefsClass = fetcher.getPreferencesClass();

View File

@ -16,7 +16,6 @@ import org.eclipse.swt.widgets.TableItem;
import javax.inject.Inject;
import javax.inject.Named;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@ -34,14 +33,14 @@ public class FeederGUIRegistry implements FeederRegistry<AbstractFeederGUI> {
Feeder lastScanFeeder;
private AbstractFeederGUI currentFeederGUI;
@Inject public FeederGUIRegistry(AbstractFeederGUI[] allTheFeeders, @Named("feederSelectionCombo") Combo feederSelectionCombo, GUIConfig guiConfig) {
this.feederGUIList = Arrays.asList(allTheFeeders);
@Inject public FeederGUIRegistry(List<AbstractFeederGUI> allTheFeeders, @Named("feederSelectionCombo") Combo feederSelectionCombo, GUIConfig guiConfig) {
this.feederGUIList = allTheFeeders;
this.feederSelectionCombo = feederSelectionCombo;
for (AbstractFeederGUI feederGUI : feederGUIList) {
feederSelectionCombo.add(feederGUI.getFeederName());
}
this.guiConfig = guiConfig;
this.currentFeederGUI = allTheFeeders[0];
this.currentFeederGUI = allTheFeeders.get(0);
}
public AbstractFeederGUI current() {

View File

@ -3,11 +3,12 @@
*/
package net.azib.ipscan.exporters;
import static org.junit.Assert.*;
import org.junit.Test;
import java.util.Arrays;
import java.util.Iterator;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* ExporterRegistryTest
@ -16,7 +17,7 @@ import org.junit.Test;
*/
public class ExporterRegistryTest {
private ExporterRegistry exporterRegistry = new ExporterRegistry(new Exporter[] {new TXTExporter(), new CSVExporter()});
private ExporterRegistry exporterRegistry = new ExporterRegistry(Arrays.<Exporter>asList(new TXTExporter(), new CSVExporter()));
@Test
public void testIterator() {

View File

@ -13,6 +13,7 @@ import org.picocontainer.defaults.DefaultPicoContainer;
import java.util.Iterator;
import java.util.prefs.Preferences;
import static java.util.Arrays.asList;
import static org.junit.Assert.*;
/**
@ -39,7 +40,7 @@ public class FetcherRegistryTest {
hostnameFetcher = new HostnameFetcher();
commentFetcher = new CommentFetcher(null);
portsFetcher = new PortsFetcher(null);
fetcherRegistry = new FetcherRegistry(new Fetcher[] {ipFetcher, pingFetcher, hostnameFetcher, commentFetcher, portsFetcher}, preferences);
fetcherRegistry = new FetcherRegistry(asList(ipFetcher, pingFetcher, hostnameFetcher, commentFetcher, portsFetcher), preferences);
}
@After
@ -72,18 +73,18 @@ public class FetcherRegistryTest {
@Test
public void testLoadPreferences() throws Exception {
preferences.remove(FetcherRegistry.PREFERENCE_SELECTED_FETCHERS);
fetcherRegistry = new FetcherRegistry(new Fetcher[] {ipFetcher, hostnameFetcher, commentFetcher}, preferences);
fetcherRegistry = new FetcherRegistry(asList(ipFetcher, hostnameFetcher, commentFetcher), preferences);
assertEquals(4, fetcherRegistry.getSelectedFetchers().size());
preferences.put(FetcherRegistry.PREFERENCE_SELECTED_FETCHERS, hostnameFetcher.getId() + "###" + commentFetcher.getId());
fetcherRegistry = new FetcherRegistry(new Fetcher[] {ipFetcher, hostnameFetcher, commentFetcher}, preferences);
fetcherRegistry = new FetcherRegistry(asList(ipFetcher, hostnameFetcher, commentFetcher), preferences);
assertEquals(2, fetcherRegistry.getSelectedFetchers().size());
Iterator<?> iterator = fetcherRegistry.getSelectedFetchers().iterator();
assertSame(hostnameFetcher, iterator.next());
assertSame(commentFetcher, iterator.next());
preferences.put(FetcherRegistry.PREFERENCE_SELECTED_FETCHERS, "not-existing-fetcher###" + hostnameFetcher.getId());
fetcherRegistry = new FetcherRegistry(new Fetcher[] {ipFetcher, hostnameFetcher}, preferences);
fetcherRegistry = new FetcherRegistry(asList(ipFetcher, hostnameFetcher), preferences);
assertEquals(1, fetcherRegistry.getSelectedFetchers().size());
}
@ -126,7 +127,7 @@ public class FetcherRegistryTest {
container.registerComponentInstance(message);
Fetcher editableFetcher = new EditableFetcher();
fetcherRegistry = new FetcherRegistry(new Fetcher[] {ipFetcher, editableFetcher}, preferences);
fetcherRegistry = new FetcherRegistry(asList(ipFetcher, editableFetcher), preferences);
EditableFetcherPrefs.calledWithMessage = null;
fetcherRegistry.openPreferencesEditor(editableFetcher);
@ -142,14 +143,13 @@ public class FetcherRegistryTest {
}
public static class EditableFetcher extends AbstractFetcher {
public String getId() {
@Override public String getId() {
return null;
}
public Object scan(ScanningSubject subject) {
@Override public Object scan(ScanningSubject subject) {
return null;
}
@Override
public Class<? extends FetcherPrefs> getPreferencesClass() {
@Override public Class<? extends FetcherPrefs> getPreferencesClass() {
return EditableFetcherPrefs.class;
}
}

View File

@ -15,6 +15,8 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@ -38,7 +40,7 @@ public class FeederGUIRegistryTest {
feederGUI = new RangeFeederGUI(parent);
feederGUI.initialize();
registry = new FeederGUIRegistry(new AbstractFeederGUI[] {feederGUI}, feederSelectionCombo, null);
registry = new FeederGUIRegistry(Collections.<AbstractFeederGUI>singletonList(feederGUI), feederSelectionCombo, null);
}
@After
@ -49,7 +51,7 @@ public class FeederGUIRegistryTest {
@Test
public void addFeederNamesToTheCombo() throws Exception {
reset(feederSelectionCombo);
new FeederGUIRegistry(new AbstractFeederGUI[] {feederGUI}, feederSelectionCombo, null);
new FeederGUIRegistry(Collections.<AbstractFeederGUI>singletonList(feederGUI), feederSelectionCombo, null);
verify(feederSelectionCombo).add(Labels.getLabel(feederGUI.getFeederId()));
}