diff --git a/src/main/java/org/jabref/logic/importer/FulltextFetcher.java b/src/main/java/org/jabref/logic/importer/FulltextFetcher.java index dc578db661c..a6438be2ade 100644 --- a/src/main/java/org/jabref/logic/importer/FulltextFetcher.java +++ b/src/main/java/org/jabref/logic/importer/FulltextFetcher.java @@ -30,7 +30,5 @@ public interface FulltextFetcher { * * @return The trust level of the fetcher, the higher the better */ - default TrustLevel getTrustLevel() { - return TrustLevel.UNKNOWN; - } + TrustLevel getTrustLevel(); } diff --git a/src/main/java/org/jabref/logic/importer/FulltextFetchers.java b/src/main/java/org/jabref/logic/importer/FulltextFetchers.java index a8dee84dd33..2b8a86dd842 100644 --- a/src/main/java/org/jabref/logic/importer/FulltextFetchers.java +++ b/src/main/java/org/jabref/logic/importer/FulltextFetchers.java @@ -14,7 +14,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; -import java.util.stream.Collectors; import org.jabref.logic.net.URLDownload; import org.jabref.logic.util.HeadlessExecutorService; @@ -113,6 +112,6 @@ private Callable> getCallable(BibEntry entry, FulltextFe private List>> getCallables(BibEntry entry, Set fetchers) { return fetchers.stream() .map(f -> getCallable(entry, f)) - .collect(Collectors.toList()); + .toList(); } } diff --git a/src/main/java/org/jabref/logic/importer/fetcher/CiteSeer.java b/src/main/java/org/jabref/logic/importer/fetcher/CiteSeer.java index 20e73b6bb1b..3f282609f77 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/CiteSeer.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/CiteSeer.java @@ -113,4 +113,9 @@ public Optional findFullText(BibEntry entry) throws IOException, FetcherExc return Optional.empty(); } + + @Override + public TrustLevel getTrustLevel() { + return TrustLevel.META_SEARCH; + } } diff --git a/src/main/java/org/jabref/logic/importer/fetcher/JstorFetcher.java b/src/main/java/org/jabref/logic/importer/fetcher/JstorFetcher.java index eb54b87dff0..83957549a56 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/JstorFetcher.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/JstorFetcher.java @@ -132,9 +132,4 @@ public Optional findFullText(BibEntry entry) throws FetcherException, IOExc public TrustLevel getTrustLevel() { return TrustLevel.META_SEARCH; } - - @Override - public void doPostCleanup(BibEntry entry) { - // do nothing - } } diff --git a/src/main/java/org/jabref/logic/importer/fetcher/TrustLevel.java b/src/main/java/org/jabref/logic/importer/fetcher/TrustLevel.java index 8e72398a78a..c26b5520dc0 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/TrustLevel.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/TrustLevel.java @@ -1,7 +1,7 @@ package org.jabref.logic.importer.fetcher; /** - * Discussion on the trust levels is available at our documentation on fetchers. + * Discussion on the trust levels is available at our documentation on fulltext fetchers. */ public enum TrustLevel { SOURCE(3), diff --git a/src/test/java/org/jabref/logic/importer/FulltextFetchersTest.java b/src/test/java/org/jabref/logic/importer/FulltextFetchersTest.java index c7e7a9bb7b9..948f8077a0f 100644 --- a/src/test/java/org/jabref/logic/importer/FulltextFetchersTest.java +++ b/src/test/java/org/jabref/logic/importer/FulltextFetchersTest.java @@ -20,36 +20,47 @@ @FetcherTest class FulltextFetchersTest { - private BibEntry entry = new BibEntry(); + /** + * Required for testing the FulltextFetchers class. + * That code is not put to the FulltextFetcher class itself, because subclasses of FulltextFetcher should implement the getTrustLevel method. + */ + private interface FulltextFetcherWithTrustLevel extends FulltextFetcher { + default TrustLevel getTrustLevel() { + return TrustLevel.UNKNOWN; + } + } @Test void acceptPdfUrls() throws MalformedURLException { URL pdfUrl = new URL("http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.pdf"); - FulltextFetcher finder = e -> Optional.of(pdfUrl); + FulltextFetcherWithTrustLevel finder = e -> Optional.of(pdfUrl); FulltextFetchers fetcher = new FulltextFetchers(Set.of(finder)); - assertEquals(Optional.of(pdfUrl), fetcher.findFullTextPDF(entry)); + assertEquals(Optional.of(pdfUrl), fetcher.findFullTextPDF(new BibEntry())); } @Test void rejectNonPdfUrls() throws MalformedURLException { URL pdfUrl = new URL("https://github.com/JabRef/jabref/blob/master/README.md"); - FulltextFetcher finder = e -> Optional.of(pdfUrl); + FulltextFetcherWithTrustLevel finder = e -> Optional.of(pdfUrl); FulltextFetchers fetcher = new FulltextFetchers(Set.of(finder)); - assertEquals(Optional.empty(), fetcher.findFullTextPDF(entry)); + assertEquals(Optional.empty(), fetcher.findFullTextPDF(new BibEntry())); } @Test void noTrustLevel() throws MalformedURLException { URL pdfUrl = new URL("http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.pdf"); - FulltextFetcher finder = e -> Optional.of(pdfUrl); + FulltextFetcherWithTrustLevel finder = e -> Optional.of(pdfUrl); FulltextFetchers fetcher = new FulltextFetchers(Set.of(finder)); - assertEquals(Optional.of(pdfUrl), fetcher.findFullTextPDF(entry)); + assertEquals(Optional.of(pdfUrl), fetcher.findFullTextPDF(new BibEntry())); } @Test void higherTrustLevelWins() throws IOException, FetcherException { + // set an (arbitrary) DOI to the test entry to skip side effects inside the "findFullTextPDF" method + BibEntry entry = new BibEntry().withField(StandardField.DOI, "10.5220/0007903201120130"); + FulltextFetcher finderHigh = mock(FulltextFetcher.class); when(finderHigh.getTrustLevel()).thenReturn(TrustLevel.SOURCE); final URL highUrl = new URL("http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.pdf"); @@ -60,11 +71,8 @@ void higherTrustLevelWins() throws IOException, FetcherException { final URL lowUrl = new URL("http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.pdf"); when(finderLow.findFullText(entry)).thenReturn(Optional.of(lowUrl)); - FulltextFetchers fetcher = new FulltextFetchers(Set.of(finderLow, finderHigh)); - - // set an (arbitrary) DOI to the test entry to skip side effects inside the "findFullTextPDF" method - entry.setField(StandardField.DOI, "10.5220/0007903201120130"); + FulltextFetchers fetchers = new FulltextFetchers(Set.of(finderLow, finderHigh)); - assertEquals(Optional.of(highUrl), fetcher.findFullTextPDF(entry)); + assertEquals(Optional.of(highUrl), fetchers.findFullTextPDF(entry)); } } diff --git a/src/test/java/org/jabref/logic/importer/WebFetchersTest.java b/src/test/java/org/jabref/logic/importer/WebFetchersTest.java index b8abaf86b45..ba033cb070e 100644 --- a/src/test/java/org/jabref/logic/importer/WebFetchersTest.java +++ b/src/test/java/org/jabref/logic/importer/WebFetchersTest.java @@ -35,7 +35,10 @@ class WebFetchersTest { private static final Logger LOGGER = LoggerFactory.getLogger(WebFetchersTest.class); - private static final Set IGNORED_INACCESSIBLE_FETCHERS = Set.of("ArXivFetcher$ArXiv"); + + private static final Set IGNORED_INACCESSIBLE_FETCHERS = Set.of( + "org.jabref.logic.importer.fetcher.ArXivFetcher$ArXiv", + "org.jabref.logic.importer.FulltextFetchersTest$FulltextFetcherWithTrustLevel"); private ImportFormatPreferences importFormatPreferences; private ImporterPreferences importerPreferences; @@ -49,7 +52,7 @@ void setUp() { private Set> getIgnoredInaccessibleClasses() { return IGNORED_INACCESSIBLE_FETCHERS.stream() - .map(className -> "org.jabref.logic.importer.fetcher." + className) + .map(className -> "" + className) .map(classPath -> { try { return Class.forName(classPath);