jabref: Improve DOI import failure dialog. Do not show exception in the gui

JabRef version

5.6 (latest release)

Operating system

Windows

Details on version and operating system

Windows 10

Checked with the latest development build

  • I made a backup of my libraries before testing the latest development version.
  • I have tested the latest development version and the problem persists

Steps to reproduce the behaviour

  1. DOI in question: 10.1109/REW.2016.24
  2. Try to get bibliography data from it
  3. Lookup DOI gives 10.1109/rew.2016.039 which works

Appendix

grafik

Log File
org.jabref.logic.importer.FetcherException: No DOI data exists
	at org.jabref@5.7.19/org.jabref.logic.importer.fetcher.DoiFetcher.performSearchById(Unknown Source)
	at org.jabref@5.7.19/org.jabref.gui.mergeentries.FetchAndMergeEntry.lambda$fetchAndMerge$0(Unknown Source)
	at org.jabref@5.7.19/org.jabref.gui.util.BackgroundTask$1.call(Unknown Source)
	at org.jabref@5.7.19/org.jabref.gui.util.DefaultTaskExecutor$1.call(Unknown Source)
	at org.jabref.merged.module@5.7.19/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: https://doi.org/10.1109/REW.2016.24
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
	at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
	at org.jabref@5.7.19/org.jabref.logic.net.URLDownload.asString(Unknown Source)
	at org.jabref@5.7.19/org.jabref.logic.net.URLDownload.asString(Unknown Source)
	... 11 more
Caused by: java.io.FileNotFoundException: https://doi.org/10.1109/REW.2016.24
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
	at org.jabref@5.7.19/org.jabref.logic.net.URLDownload.openConnection(Unknown Source)
	... 13 more

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 22 (22 by maintainers)

Most upvoted comments

@zkl-ai Yes, the Accept Header says: I want to get content in this format. Ideally, the server responds in this format. The problem is that the UrlDownload.asString just gets whatever the serer provides. It does not check the statusCode or the content-type of the returned response. So you need to modify that part to check for stauts code 404

Hello, could you assign this to me? I think this issue is quite interesting.

Thanks for the explanation. I already suspected this. I agree with the proposed route to show a more meaningful error message (which is not an exception) in those cases.

Failing silently will not help users, if the DOI is wrong. I would argue, users should be notified.

Where I stand with you: Make these notifications more pleasing to the eye. Get rid of ugly exceptions. Get rid of info about “unhandled exception occured”. What users should see first is not an “exception”, but rather the info that is of importance, which would be: “No DOI data exists”