From bc34ee644387224177fe3e973ce793328d27b001 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Mon, 20 Aug 2018 12:52:46 +0200 Subject: [PATCH] Fix NPE with bibdatabasecontext in preview style dialog --- src/main/java/org/jabref/gui/BasePanel.java | 1 - src/main/java/org/jabref/gui/PreviewPanel.java | 11 ++++++----- .../org/jabref/gui/openoffice/StyleSelectDialog.java | 3 ++- .../java/org/jabref/gui/preftabs/PreviewPrefsTab.java | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index 9bcbc8193b2..f9f1641a7e3 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -228,7 +228,6 @@ public BasePanel(JabRefFrame frame, BasePanelPreferences preferences, BibDatabas this.preview = new PreviewPanel(this, getBibDatabaseContext(), preferences.getKeyBindings(), preferences.getPreviewPreferences(), dialogService, externalFileTypes); frame().getGlobalSearchBar().getSearchQueryHighlightObservable().addSearchListener(preview); - } @Subscribe diff --git a/src/main/java/org/jabref/gui/PreviewPanel.java b/src/main/java/org/jabref/gui/PreviewPanel.java index 5d7f4c6d016..7a0b16a16a7 100644 --- a/src/main/java/org/jabref/gui/PreviewPanel.java +++ b/src/main/java/org/jabref/gui/PreviewPanel.java @@ -5,6 +5,7 @@ import java.io.StringReader; import java.nio.file.Path; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.concurrent.Future; import java.util.regex.Pattern; @@ -70,7 +71,7 @@ public class PreviewPanel extends ScrollPane implements SearchQueryHighlightList /** * If a database is set, the preview will attempt to resolve strings in the previewed entry using that database. */ - private Optional databaseContext = Optional.empty(); + private BibDatabaseContext databaseContext; private final WebView previewView; private Optional> citationStyleFuture = Optional.empty(); @@ -78,10 +79,10 @@ public class PreviewPanel extends ScrollPane implements SearchQueryHighlightList /** * @param panel (may be null) Only set this if the preview is associated to the main window. - * @param databaseContext (may be null) Used for resolving pdf directories for links. + * @param databaseContext Used for resolving pdf directories for links. Must not be null. */ public PreviewPanel(BasePanel panel, BibDatabaseContext databaseContext, KeyBindingRepository keyBindingRepository, PreviewPreferences preferences, DialogService dialogService, ExternalFileTypes externalFileTypes) { - this.databaseContext = Optional.ofNullable(databaseContext); + this.databaseContext = Objects.requireNonNull(databaseContext); this.basePanel = Optional.ofNullable(panel); this.dialogService = dialogService; this.clipBoardManager = Globals.clipboardManager; @@ -198,7 +199,7 @@ private ContextMenu createPopupMenu() { } public void setDatabaseContext(BibDatabaseContext databaseContext) { - this.databaseContext = Optional.ofNullable(databaseContext); + this.databaseContext = databaseContext; } public Optional getBasePanel() { @@ -281,7 +282,7 @@ public void update() { if (layout.isPresent()) { StringBuilder sb = new StringBuilder(); bibEntry.ifPresent(entry -> sb.append(layout.get() - .doLayout(entry, databaseContext.map(BibDatabaseContext::getDatabase).orElse(null)))); + .doLayout(entry, databaseContext.getDatabase()))); setPreviewLabel(sb.toString()); } else if (basePanel.isPresent() && bibEntry.isPresent()) { Future citationStyleWorker = BackgroundTask diff --git a/src/main/java/org/jabref/gui/openoffice/StyleSelectDialog.java b/src/main/java/org/jabref/gui/openoffice/StyleSelectDialog.java index ca73fefff1d..62317e1c8fd 100644 --- a/src/main/java/org/jabref/gui/openoffice/StyleSelectDialog.java +++ b/src/main/java/org/jabref/gui/openoffice/StyleSelectDialog.java @@ -53,6 +53,7 @@ import org.jabref.logic.openoffice.StyleLoader; import org.jabref.logic.util.StandardFileType; import org.jabref.logic.util.TestEntry; +import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.preferences.JabRefPreferences; @@ -134,7 +135,7 @@ private void init() { // Create a preview panel for previewing styles // Must be done before creating the table to avoid NPEs DefaultTaskExecutor.runInJavaFXThread(() -> { - preview = new PreviewPanel(null, null, Globals.getKeyPrefs(), Globals.prefs.getPreviewPreferences(), dialogService, ExternalFileTypes.getInstance()); + preview = new PreviewPanel(null, new BibDatabaseContext(), Globals.getKeyPrefs(), Globals.prefs.getPreviewPreferences(), dialogService, ExternalFileTypes.getInstance()); // Use the test entry from the Preview settings tab in Preferences: preview.setEntry(prevEntry); }); diff --git a/src/main/java/org/jabref/gui/preftabs/PreviewPrefsTab.java b/src/main/java/org/jabref/gui/preftabs/PreviewPrefsTab.java index 89d310c8ebd..9e2b8480302 100644 --- a/src/main/java/org/jabref/gui/preftabs/PreviewPrefsTab.java +++ b/src/main/java/org/jabref/gui/preftabs/PreviewPrefsTab.java @@ -128,7 +128,7 @@ private void setupLogic() { btnTest.setOnAction(event -> { try { DefaultTaskExecutor.runInJavaFXThread(() -> { - PreviewPanel testPane = new PreviewPanel(null, null, Globals.getKeyPrefs(), Globals.prefs.getPreviewPreferences(), dialogService, externalFileTypes); + PreviewPanel testPane = new PreviewPanel(null, new BibDatabaseContext(), Globals.getKeyPrefs(), Globals.prefs.getPreviewPreferences(), dialogService, externalFileTypes); if (chosen.getSelectionModel().getSelectedItems().isEmpty()) { testPane.setFixedLayout(layout.getText()); testPane.setEntry(TestEntry.getTestEntry());