Skip to content

Commit c68eb3b

Browse files
committed
Disable searchers in the SearchOperation
When a Searcher is disabled, don't even call its search method. That way, rogue Searchers cannot return results when disabled, and Searchers do not require access to their SearchService.
1 parent c6ce870 commit c68eb3b

File tree

5 files changed

+7
-30
lines changed

5 files changed

+7
-30
lines changed

src/main/java/org/scijava/search/DefaultSearchOperation.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public class DefaultSearchOperation implements SearchOperation {
2525
private final SearchListener[] listeners;
2626
private final List<SearchAttempt> currentSearches = new ArrayList<>();
2727

28+
@Parameter
29+
private SearchService searchService;
30+
2831
@Parameter
2932
private PluginService pluginService;
3033

@@ -127,7 +130,10 @@ public void invalidate() {
127130
@Override
128131
public void run() {
129132
final boolean exclusive = searcher.exclusive(query);
130-
final List<SearchResult> results = searcher.search(query, fuzzy);
133+
final boolean enabled = searchService.enabled(searcher);
134+
if (!valid) return;
135+
final List<SearchResult> results = enabled ? //
136+
searcher.search(query, fuzzy) : Collections.emptyList();
131137
if (!valid) return;
132138
for (final SearchListener l : listeners) {
133139
l.searchCompleted(new SearchEvent(searcher, results, exclusive));

src/main/java/org/scijava/search/module/ModuleSearcher.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131

3232
package org.scijava.search.module;
3333

34-
import java.util.ArrayList;
3534
import java.util.List;
3635
import java.util.stream.Collectors;
3736

@@ -43,7 +42,6 @@
4342
import org.scijava.plugin.Parameter;
4443
import org.scijava.plugin.Plugin;
4544
import org.scijava.search.SearchResult;
46-
import org.scijava.search.SearchService;
4745
import org.scijava.search.Searcher;
4846

4947
/**
@@ -62,9 +60,6 @@ public class ModuleSearcher implements Searcher {
6260

6361
@Parameter
6462
private AppService appService;
65-
66-
@Parameter
67-
private SearchService searchService;
6863

6964
@Override
7065
public String title() {
@@ -74,7 +69,6 @@ public String title() {
7469

7570
@Override
7671
public List<SearchResult> search(final String text, final boolean fuzzy) {
77-
if(!searchService.enabled(this)) return new ArrayList<>();
7872
final String baseDir = //
7973
appService.getApp().getBaseDirectory().getAbsolutePath();
8074
return moduleService.getModules().stream() //

src/main/java/org/scijava/search/web/BISESearcher.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@
44
import java.io.IOException;
55
import java.net.URL;
66
import java.net.URLEncoder;
7-
import java.util.ArrayList;
87
import java.util.List;
98

109
import javax.xml.parsers.DocumentBuilder;
1110
import javax.xml.parsers.DocumentBuilderFactory;
1211
import javax.xml.parsers.ParserConfigurationException;
1312

14-
import org.scijava.plugin.Parameter;
1513
import org.scijava.search.SearchResult;
16-
import org.scijava.search.SearchService;
1714
import org.w3c.dom.Document;
1815
import org.w3c.dom.Node;
1916
import org.w3c.dom.NodeList;
@@ -27,19 +24,13 @@
2724
*/
2825
//@Plugin(type = Searcher.class, name = "BISE")
2926
public class BISESearcher extends AbstractWebSearcher {
30-
31-
@Parameter
32-
private SearchService searchService;
3327

3428
public BISESearcher() {
3529
super("BISE");
3630
}
3731

3832
@Override
3933
public List<SearchResult> search(final String text, final boolean fuzzy) {
40-
41-
if(!searchService.enabled(this)) return new ArrayList<>();
42-
4334
try {
4435
// URL url = new URL("file:///c:/structure/temp/biii.eu_search2.html");
4536
final URL url = new URL("http://biii.eu/search?search_api_fulltext=" +

src/main/java/org/scijava/search/web/ImageJForumSearcher.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@
44
import java.io.IOException;
55
import java.net.URL;
66
import java.net.URLEncoder;
7-
import java.util.ArrayList;
87
import java.util.HashMap;
98
import java.util.List;
109
import java.util.Scanner;
1110

12-
import org.scijava.plugin.Parameter;
1311
import org.scijava.plugin.Plugin;
1412
import org.scijava.search.SearchResult;
15-
import org.scijava.search.SearchService;
1613
import org.scijava.search.Searcher;
1714

1815
/**
@@ -22,17 +19,13 @@
2219
*/
2320
@Plugin(type = Searcher.class, name = "ImageJ Forum")
2421
public class ImageJForumSearcher extends AbstractWebSearcher {
25-
26-
@Parameter
27-
private SearchService searchService;
2822

2923
public ImageJForumSearcher() {
3024
super("ImageJ Forum");
3125
}
3226

3327
@Override
3428
public List<SearchResult> search(final String text, final boolean fuzzy) {
35-
if(!searchService.enabled(this)) return new ArrayList<>();
3629
try {
3730
final URL url = new URL("http://forum.imagej.net/search?q=" + URLEncoder
3831
.encode(text) + "&source=imagej");

src/main/java/org/scijava/search/web/WikiSearcher.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,14 @@
44
import java.io.IOException;
55
import java.net.URL;
66
import java.net.URLEncoder;
7-
import java.util.ArrayList;
87
import java.util.List;
98

109
import javax.xml.parsers.DocumentBuilder;
1110
import javax.xml.parsers.DocumentBuilderFactory;
1211
import javax.xml.parsers.ParserConfigurationException;
1312

14-
import org.scijava.plugin.Parameter;
1513
import org.scijava.plugin.Plugin;
1614
import org.scijava.search.SearchResult;
17-
import org.scijava.search.SearchService;
1815
import org.scijava.search.Searcher;
1916
import org.w3c.dom.Document;
2017
import org.w3c.dom.Node;
@@ -29,17 +26,13 @@
2926
*/
3027
@Plugin(type = Searcher.class, name = "ImageJ Wiki")
3128
public class WikiSearcher extends AbstractWebSearcher {
32-
33-
@Parameter
34-
private SearchService searchService;
3529

3630
public WikiSearcher() {
3731
super("ImageJ Wiki");
3832
}
3933

4034
@Override
4135
public List<SearchResult> search(final String text, final boolean fuzzy) {
42-
if(!searchService.enabled(this)) return new ArrayList<>();
4336
try {
4437
final URL url = new URL(
4538
"http://imagej.net/index.php?title=Special%3ASearch&search=" +

0 commit comments

Comments
 (0)