From fa84e4e845a458d9f864cd4b1cb37a2bf85c63ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Fri, 14 Apr 2017 22:37:08 +0300 Subject: [PATCH 01/17] Adding a bunch of debug prints and assert's to find a reason for the 'null pointer exception'. --- .../model/database/BibDatabaseContext.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index 0bb5e863e40..ff1c3a3a9e2 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -179,6 +179,8 @@ public Optional getFirstExistingFileDir(FileDirectoryPreferences preferenc public List getFileDirectories(String fieldName, FileDirectoryPreferences preferences) { List fileDirs = new ArrayList<>(); + System.out.println( ">>> HERE!" ); + // 1. metadata user-specific directory Optional userFileDirectory = metaData.getUserFileDirectory(preferences.getUser()); if (userFileDirectory.isPresent()) { @@ -198,14 +200,25 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference // 4. BIB file directory getDatabasePath().ifPresent(dbPath -> { - String parentDir = dbPath.getParent().toAbsolutePath().toString(); - // Check if we should add it as primary file dir (first in the list) or not: - if (preferences.isBibLocationAsPrimary()) { - fileDirs.add(0, parentDir); - } else { - fileDirs.add(parentDir); - } - }); + if( dbPath == null ) { + System.err.println( "EEE>>> dbPath is null" ); + } else { + System.err.println( "EEE>>> dbPath is NOT null: " + dbPath ); + } + assert dbPath != null : "dbPath is null"; + assert dbPath.getParent() != null : "dbPath.getParent() is null"; + assert dbPath.getParent().toAbsolutePath() != null : "dbPath.getParent().toAbsolutePath() is null"; + assert dbPath.getParent().toAbsolutePath().toString() != null : "dbPath.getParent().toAbsolutePath().toString() is null"; + assert preferences != null : "'preferences' is null"; + assert fileDirs != null : "'fileDirs' is null"; + String parentDir = dbPath.getParent().toAbsolutePath().toString(); + // Check if we should add it as primary file dir (first in the list) or not: + if (preferences.isBibLocationAsPrimary()) { + fileDirs.add(0, parentDir); + } else { + fileDirs.add(parentDir); + } + }); return fileDirs; } From 9e62873bda702966e6c568f9cd0d52b980d933df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Fri, 14 Apr 2017 23:22:44 +0300 Subject: [PATCH 02/17] Removing the 'HERE' debug print. --- src/main/java/org/jabref/model/database/BibDatabaseContext.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index ff1c3a3a9e2..76f1bfbc700 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -179,8 +179,6 @@ public Optional getFirstExistingFileDir(FileDirectoryPreferences preferenc public List getFileDirectories(String fieldName, FileDirectoryPreferences preferences) { List fileDirs = new ArrayList<>(); - System.out.println( ">>> HERE!" ); - // 1. metadata user-specific directory Optional userFileDirectory = metaData.getUserFileDirectory(preferences.getUser()); if (userFileDirectory.isPresent()) { From ab8dd4216d752c4087983986d7fc7c3e6a1d6ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Fri, 14 Apr 2017 23:23:18 +0300 Subject: [PATCH 03/17] Removing the rest of my debug prints. --- .../model/database/BibDatabaseContext.java | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index 76f1bfbc700..de926a1f6d8 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -198,25 +198,20 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference // 4. BIB file directory getDatabasePath().ifPresent(dbPath -> { - if( dbPath == null ) { - System.err.println( "EEE>>> dbPath is null" ); - } else { - System.err.println( "EEE>>> dbPath is NOT null: " + dbPath ); - } - assert dbPath != null : "dbPath is null"; - assert dbPath.getParent() != null : "dbPath.getParent() is null"; - assert dbPath.getParent().toAbsolutePath() != null : "dbPath.getParent().toAbsolutePath() is null"; - assert dbPath.getParent().toAbsolutePath().toString() != null : "dbPath.getParent().toAbsolutePath().toString() is null"; - assert preferences != null : "'preferences' is null"; - assert fileDirs != null : "'fileDirs' is null"; - String parentDir = dbPath.getParent().toAbsolutePath().toString(); - // Check if we should add it as primary file dir (first in the list) or not: - if (preferences.isBibLocationAsPrimary()) { - fileDirs.add(0, parentDir); - } else { - fileDirs.add(parentDir); - } - }); + assert dbPath != null : "dbPath is null"; + assert dbPath.getParent() != null : "dbPath.getParent() is null"; + assert dbPath.getParent().toAbsolutePath() != null : "dbPath.getParent().toAbsolutePath() is null"; + assert dbPath.getParent().toAbsolutePath().toString() != null : "dbPath.getParent().toAbsolutePath().toString() is null"; + assert preferences != null : "'preferences' is null"; + assert fileDirs != null : "'fileDirs' is null"; + String parentDir = dbPath.getParent().toAbsolutePath().toString(); + // Check if we should add it as primary file dir (first in the list) or not: + if (preferences.isBibLocationAsPrimary()) { + fileDirs.add(0, parentDir); + } else { + fileDirs.add(parentDir); + } + }); return fileDirs; } From cb89c73b9701cc637aa98b1efc50f3672d84d8dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Fri, 14 Apr 2017 23:34:15 +0300 Subject: [PATCH 04/17] Adding a fix for the [WIP] Clicking 'Get fulltext' triggers a 'null pointer exception' when a databse is opened in a current directory. --- .../jabref/model/database/BibDatabaseContext.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index de926a1f6d8..897ccc474be 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -199,12 +199,12 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference // 4. BIB file directory getDatabasePath().ifPresent(dbPath -> { assert dbPath != null : "dbPath is null"; - assert dbPath.getParent() != null : "dbPath.getParent() is null"; - assert dbPath.getParent().toAbsolutePath() != null : "dbPath.getParent().toAbsolutePath() is null"; - assert dbPath.getParent().toAbsolutePath().toString() != null : "dbPath.getParent().toAbsolutePath().toString() is null"; - assert preferences != null : "'preferences' is null"; - assert fileDirs != null : "'fileDirs' is null"; - String parentDir = dbPath.getParent().toAbsolutePath().toString(); + Path parentPath = dbPath.getParent(); + if( parentPath == null ) { + parentPath = Paths.get(System.getProperty("user.dir")); + } + assert parentPath != null : "BibTex database parent path is null"; + String parentDir = parentPath.toAbsolutePath().toString(); // Check if we should add it as primary file dir (first in the list) or not: if (preferences.isBibLocationAsPrimary()) { fileDirs.add(0, parentDir); From 89493e3aa10f01bad17d07f8538c521a5db16938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sat, 15 Apr 2017 00:16:42 +0300 Subject: [PATCH 05/17] Attempting to create a unit test for the new fix, but so far could not re-create the necessary run environment. --- .../database/BibDatabaseContextTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/test/java/org/jabref/model/database/BibDatabaseContextTest.java diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java new file mode 100644 index 00000000000..16e0434e6a5 --- /dev/null +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -0,0 +1,37 @@ +package org.jabref.model.database; + +import java.util.List; +import java.util.Map; +import java.util.HashMap; + +import org.jabref.model.metadata.FileDirectoryPreferences; + +import org.junit.Rule; +import org.junit.Before; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.junit.Assert.assertTrue; + +public class BibDatabaseContextTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + FileDirectoryPreferences preferences; + + @Before + public void setUp() { + Map mapFieldDirs = new HashMap<>(); + mapFieldDirs.put("pdf", "/home/saulius/jabref"); + preferences = new FileDirectoryPreferences("saulius", mapFieldDirs, true); + } + + @Test + public void getFileDirectoriesWithEmptyDbParent() { + BibDatabaseContext dbContext = new BibDatabaseContext(); + List fileDirectories = dbContext.getFileDirectories( "file", preferences ); + assertTrue(fileDirectories.get(0).equals("")); + } + +} From 30afedd4ae37d3d4455027b9d8a1be6850e3eb36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sat, 15 Apr 2017 20:50:30 +0300 Subject: [PATCH 06/17] Creating a working unit test for the new relative path fix, and adding also three regression tests for the old functionality. --- .../database/BibDatabaseContextTest.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index 16e0434e6a5..0eba3abcf0e 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -2,6 +2,8 @@ import java.util.List; import java.util.Map; +import java.io.File; +import java.nio.file.Paths; import java.util.HashMap; import org.jabref.model.metadata.FileDirectoryPreferences; @@ -15,6 +17,8 @@ public class BibDatabaseContextTest { + private String currentWorkingDir; + @Rule public ExpectedException thrown = ExpectedException.none(); @@ -25,13 +29,41 @@ public void setUp() { Map mapFieldDirs = new HashMap<>(); mapFieldDirs.put("pdf", "/home/saulius/jabref"); preferences = new FileDirectoryPreferences("saulius", mapFieldDirs, true); + currentWorkingDir = Paths.get(System.getProperty("user.dir")).toString(); } @Test public void getFileDirectoriesWithEmptyDbParent() { BibDatabaseContext dbContext = new BibDatabaseContext(); + dbContext.setDatabaseFile(new File("biblio.bib")); List fileDirectories = dbContext.getFileDirectories( "file", preferences ); - assertTrue(fileDirectories.get(0).equals("")); + assertTrue(fileDirectories.get(0).equals(currentWorkingDir)); + } + + @Test + public void getFileDirectoriesWithRelativeDbParent() { + String dbDirectory = "relative/subdir"; + BibDatabaseContext dbContext = new BibDatabaseContext(); + dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); + List fileDirectories = dbContext.getFileDirectories("file", preferences); + assertTrue(fileDirectories.get(0).equals(currentWorkingDir + "/" + dbDirectory)); + } + + @Test + public void getFileDirectoriesWithRelativeDottedDbParent() { + String dbDirectory = "./relative/subdir"; + BibDatabaseContext dbContext = new BibDatabaseContext(); + dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); + List fileDirectories = dbContext.getFileDirectories("file", preferences); + assertTrue(fileDirectories.get(0).equals(currentWorkingDir + "/" + dbDirectory)); } + @Test + public void getFileDirectoriesWithAbsoluteDbParent() { + String dbDirectory = "/absolute/subdir"; + BibDatabaseContext dbContext = new BibDatabaseContext(); + dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); + List fileDirectories = dbContext.getFileDirectories("file", preferences); + assertTrue(fileDirectories.get(0).equals(dbDirectory)); + } } From 05cdd9a02fcab399c32ac6ecec8831f7aaf4dd6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sat, 15 Apr 2017 21:06:18 +0300 Subject: [PATCH 07/17] Fixing the order of imports in the newly created test file. --- .../org/jabref/model/database/BibDatabaseContextTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index 0eba3abcf0e..f7686b5e51a 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -1,15 +1,15 @@ package org.jabref.model.database; -import java.util.List; -import java.util.Map; import java.io.File; import java.nio.file.Paths; import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.jabref.model.metadata.FileDirectoryPreferences; -import org.junit.Rule; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; From 2c6a209bd99c4863d76678649e22fbc71e592ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sat, 15 Apr 2017 21:27:20 +0300 Subject: [PATCH 08/17] Temporarily commenting out of the new fix, to see if the new tests catch the previous bug. Indeed, the new unit test fails both in Eclipse and in the CLI './gradlew build' run. --- src/main/java/org/jabref/model/database/BibDatabaseContext.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index 897ccc474be..05e0c0e469f 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -200,9 +200,11 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference getDatabasePath().ifPresent(dbPath -> { assert dbPath != null : "dbPath is null"; Path parentPath = dbPath.getParent(); + /* if( parentPath == null ) { parentPath = Paths.get(System.getProperty("user.dir")); } + */ assert parentPath != null : "BibTex database parent path is null"; String parentDir = parentPath.toAbsolutePath().toString(); // Check if we should add it as primary file dir (first in the list) or not: From 54b2ada69cdf2dbbaf82faf943e8fe17017e4f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sat, 15 Apr 2017 21:35:20 +0300 Subject: [PATCH 09/17] Restoring my fix in the 'BibDatabaseContext.java' file, fixing the 'null pointer exception' if a database is passed as a local file without explicite path. The tests in 'BibDatabaseContextTest.java' pass again. --- src/main/java/org/jabref/model/database/BibDatabaseContext.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index 05e0c0e469f..897ccc474be 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -200,11 +200,9 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference getDatabasePath().ifPresent(dbPath -> { assert dbPath != null : "dbPath is null"; Path parentPath = dbPath.getParent(); - /* if( parentPath == null ) { parentPath = Paths.get(System.getProperty("user.dir")); } - */ assert parentPath != null : "BibTex database parent path is null"; String parentDir = parentPath.toAbsolutePath().toString(); // Check if we should add it as primary file dir (first in the list) or not: From 9ee768cd3994c2a94a8a30ab283cce5efb3c0225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sat, 15 Apr 2017 22:06:44 +0300 Subject: [PATCH 10/17] Removing the test line that is not needed for the tests to work in 'BibDatabaseContextTest'. --- .../java/org/jabref/model/database/BibDatabaseContextTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index f7686b5e51a..403e838eef0 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -27,7 +27,6 @@ public class BibDatabaseContextTest { @Before public void setUp() { Map mapFieldDirs = new HashMap<>(); - mapFieldDirs.put("pdf", "/home/saulius/jabref"); preferences = new FileDirectoryPreferences("saulius", mapFieldDirs, true); currentWorkingDir = Paths.get(System.getProperty("user.dir")).toString(); } From 2deedc7b068d45bf4699cf824b325eb343ecaf64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sun, 16 Apr 2017 11:48:02 +0300 Subject: [PATCH 11/17] Adding explicite scope ('private') to 'FileDirectoryPreferences preferences'. --- .../java/org/jabref/model/database/BibDatabaseContextTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index 403e838eef0..652ef61c4f5 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -18,12 +18,11 @@ public class BibDatabaseContextTest { private String currentWorkingDir; + private FileDirectoryPreferences preferences; @Rule public ExpectedException thrown = ExpectedException.none(); - FileDirectoryPreferences preferences; - @Before public void setUp() { Map mapFieldDirs = new HashMap<>(); From e56e68cb9c85db7eb98c0468a1cb7f8f0b9f90ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sun, 16 Apr 2017 12:04:26 +0300 Subject: [PATCH 12/17] Fixed the coding style according to the JabRef conventions. --- src/main/java/org/jabref/model/database/BibDatabaseContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index 897ccc474be..e6ac83008ea 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -200,7 +200,7 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference getDatabasePath().ifPresent(dbPath -> { assert dbPath != null : "dbPath is null"; Path parentPath = dbPath.getParent(); - if( parentPath == null ) { + if (parentPath == null) { parentPath = Paths.get(System.getProperty("user.dir")); } assert parentPath != null : "BibTex database parent path is null"; From bf24bbd38c1800f903bd4a77610b7f5b535d92ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sun, 16 Apr 2017 12:45:59 +0300 Subject: [PATCH 13/17] Switcing from 'assertTrue' to 'assertEquals' in the BibDatabaseContextTest unit test. --- .../model/database/BibDatabaseContextTest.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index 652ef61c4f5..90d0dfd7fcf 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -2,6 +2,7 @@ import java.io.File; import java.nio.file.Paths; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -13,7 +14,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertEquals; public class BibDatabaseContextTest { @@ -35,7 +36,8 @@ public void getFileDirectoriesWithEmptyDbParent() { BibDatabaseContext dbContext = new BibDatabaseContext(); dbContext.setDatabaseFile(new File("biblio.bib")); List fileDirectories = dbContext.getFileDirectories( "file", preferences ); - assertTrue(fileDirectories.get(0).equals(currentWorkingDir)); + assertEquals(Collections.singletonList(currentWorkingDir), + fileDirectories); } @Test @@ -44,7 +46,8 @@ public void getFileDirectoriesWithRelativeDbParent() { BibDatabaseContext dbContext = new BibDatabaseContext(); dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); List fileDirectories = dbContext.getFileDirectories("file", preferences); - assertTrue(fileDirectories.get(0).equals(currentWorkingDir + "/" + dbDirectory)); + assertEquals(Collections.singletonList(currentWorkingDir + "/" + dbDirectory), + fileDirectories); } @Test @@ -53,7 +56,8 @@ public void getFileDirectoriesWithRelativeDottedDbParent() { BibDatabaseContext dbContext = new BibDatabaseContext(); dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); List fileDirectories = dbContext.getFileDirectories("file", preferences); - assertTrue(fileDirectories.get(0).equals(currentWorkingDir + "/" + dbDirectory)); + assertEquals(Collections.singletonList(currentWorkingDir + "/" + dbDirectory), + fileDirectories); } @Test @@ -62,6 +66,6 @@ public void getFileDirectoriesWithAbsoluteDbParent() { BibDatabaseContext dbContext = new BibDatabaseContext(); dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); List fileDirectories = dbContext.getFileDirectories("file", preferences); - assertTrue(fileDirectories.get(0).equals(dbDirectory)); + assertEquals(Collections.singletonList(dbDirectory), fileDirectories); } } From ee4e02392a9dae6cff32616491891aa769a829c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sun, 16 Apr 2017 13:22:57 +0300 Subject: [PATCH 14/17] Changing 'assert ...path != null ...' to 'Objects.requireNonNull(...)'. --- .../java/org/jabref/model/database/BibDatabaseContext.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index e6ac83008ea..a1bcb925329 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -198,12 +198,12 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference // 4. BIB file directory getDatabasePath().ifPresent(dbPath -> { - assert dbPath != null : "dbPath is null"; + Objects.requireNonNull(dbPath, "dbPath is null"); Path parentPath = dbPath.getParent(); if (parentPath == null) { parentPath = Paths.get(System.getProperty("user.dir")); } - assert parentPath != null : "BibTex database parent path is null"; + Objects.requireNonNull(parentPath, "BibTex database parent path is null"); String parentDir = parentPath.toAbsolutePath().toString(); // Check if we should add it as primary file dir (first in the list) or not: if (preferences.isBibLocationAsPrimary()) { From f76ecbaeea42ea1fb052fce37c07ee9a3b328b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saulius=20Gra=C5=BEulis?= Date: Sun, 16 Apr 2017 14:00:38 +0300 Subject: [PATCH 15/17] Commenting variables used in the 'BibDatabaseContextTest' unit test. --- .../model/database/BibDatabaseContextTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index 90d0dfd7fcf..7561d527a73 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -18,7 +18,20 @@ public class BibDatabaseContextTest { + // The 'currentWorkingDir' variable is used to re-create the part + // of the JabRef internal state that we get when the 'jabref + // biblio.bib' command is invoked from a command line (on + // Unix/Linux, but I guess on Windows clones as well). In the + // above-mentioned command, the current working directory must be + // used as a 'biblio.bib' parent directory. Since the current + // working directory is different on various computers that invoke + // the test, we can not hard-code it into the test but must + // determine it at run-time: private String currentWorkingDir; + + // Store the minimal preferences for the + // BibDatabaseContext.getFileDirectories(File, + // FileDirectoryPreferences) incocation: private FileDirectoryPreferences preferences; @Rule From 95506f2275b16dafd33833141980d5e1263c3e9c Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Sun, 16 Apr 2017 20:37:47 +0200 Subject: [PATCH 16/17] Fix paths handling in test and mock fileDirPrefs --- .../database/BibDatabaseContextTest.java | 62 +++++++++---------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index 7561d527a73..fc529d3901c 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -1,12 +1,9 @@ package org.jabref.model.database; -import java.io.File; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; - import org.jabref.model.metadata.FileDirectoryPreferences; import org.junit.Before; @@ -15,70 +12,67 @@ import org.junit.rules.ExpectedException; import static org.junit.Assert.assertEquals; - +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class BibDatabaseContextTest { - // The 'currentWorkingDir' variable is used to re-create the part - // of the JabRef internal state that we get when the 'jabref - // biblio.bib' command is invoked from a command line (on - // Unix/Linux, but I guess on Windows clones as well). In the - // above-mentioned command, the current working directory must be - // used as a 'biblio.bib' parent directory. Since the current - // working directory is different on various computers that invoke - // the test, we can not hard-code it into the test but must - // determine it at run-time: - private String currentWorkingDir; + + private Path currentWorkingDir; // Store the minimal preferences for the // BibDatabaseContext.getFileDirectories(File, // FileDirectoryPreferences) incocation: - private FileDirectoryPreferences preferences; + private FileDirectoryPreferences fileDirPrefs; @Rule public ExpectedException thrown = ExpectedException.none(); @Before public void setUp() { - Map mapFieldDirs = new HashMap<>(); - preferences = new FileDirectoryPreferences("saulius", mapFieldDirs, true); - currentWorkingDir = Paths.get(System.getProperty("user.dir")).toString(); + fileDirPrefs = mock(FileDirectoryPreferences.class); + currentWorkingDir = Paths.get(System.getProperty("user.dir")); + when(fileDirPrefs.isBibLocationAsPrimary()).thenReturn(true); } @Test public void getFileDirectoriesWithEmptyDbParent() { BibDatabaseContext dbContext = new BibDatabaseContext(); - dbContext.setDatabaseFile(new File("biblio.bib")); - List fileDirectories = dbContext.getFileDirectories( "file", preferences ); - assertEquals(Collections.singletonList(currentWorkingDir), + dbContext.setDatabaseFile(Paths.get("biblio.bib").toFile()); + List fileDirectories = dbContext.getFileDirectories("file", fileDirPrefs); + assertEquals(Collections.singletonList(currentWorkingDir.toString()), fileDirectories); } @Test public void getFileDirectoriesWithRelativeDbParent() { - String dbDirectory = "relative/subdir"; + Path file = Paths.get("relative/subdir").resolve("biblio.bib"); + BibDatabaseContext dbContext = new BibDatabaseContext(); - dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); - List fileDirectories = dbContext.getFileDirectories("file", preferences); - assertEquals(Collections.singletonList(currentWorkingDir + "/" + dbDirectory), + dbContext.setDatabaseFile(file.toFile()); + List fileDirectories = dbContext.getFileDirectories("file", fileDirPrefs); + assertEquals(Collections.singletonList(currentWorkingDir.resolve(file.getParent()).toString()), fileDirectories); } @Test public void getFileDirectoriesWithRelativeDottedDbParent() { - String dbDirectory = "./relative/subdir"; + Path file = Paths.get("./relative/subdir").resolve("biblio.bib"); + BibDatabaseContext dbContext = new BibDatabaseContext(); - dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); - List fileDirectories = dbContext.getFileDirectories("file", preferences); - assertEquals(Collections.singletonList(currentWorkingDir + "/" + dbDirectory), + dbContext.setDatabaseFile(file.toFile()); + List fileDirectories = dbContext.getFileDirectories("file", fileDirPrefs); + assertEquals(Collections.singletonList(currentWorkingDir.resolve(file.getParent()).toString()), fileDirectories); } @Test public void getFileDirectoriesWithAbsoluteDbParent() { - String dbDirectory = "/absolute/subdir"; + Path file = Paths.get("/absolute/subdir").resolve("biblio.bib"); + BibDatabaseContext dbContext = new BibDatabaseContext(); - dbContext.setDatabaseFile(new File(dbDirectory + "/" + "biblio.bib")); - List fileDirectories = dbContext.getFileDirectories("file", preferences); - assertEquals(Collections.singletonList(dbDirectory), fileDirectories); + dbContext.setDatabaseFile(file.toFile()); + List fileDirectories = dbContext.getFileDirectories("file", fileDirPrefs); + assertEquals(Collections.singletonList(currentWorkingDir.resolve(file.getParent()).toString()), + fileDirectories); } } From 58911143b030fa0cc43c16c5233c5a9cf827c996 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Sun, 16 Apr 2017 21:40:06 +0200 Subject: [PATCH 17/17] Fix modernizer --- .../java/org/jabref/model/database/BibDatabaseContext.java | 4 +--- .../org/jabref/model/database/BibDatabaseContextTest.java | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index a1bcb925329..8a80d5e04cf 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -192,9 +192,7 @@ public List getFileDirectories(String fieldName, FileDirectoryPreference } // 3. preferences directory - preferences.getFileDirectory(fieldName).ifPresent(path -> - fileDirs.add(path.toAbsolutePath().toString()) - ); + preferences.getFileDirectory(fieldName).ifPresent(path -> fileDirs.add(path.toAbsolutePath().toString())); // 4. BIB file directory getDatabasePath().ifPresent(dbPath -> { diff --git a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java index fc529d3901c..0a944e5e4d3 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseContextTest.java @@ -4,6 +4,7 @@ import java.nio.file.Paths; import java.util.Collections; import java.util.List; + import org.jabref.model.metadata.FileDirectoryPreferences; import org.junit.Before; @@ -14,8 +15,8 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class BibDatabaseContextTest { +public class BibDatabaseContextTest { private Path currentWorkingDir; @@ -24,8 +25,7 @@ public class BibDatabaseContextTest { // FileDirectoryPreferences) incocation: private FileDirectoryPreferences fileDirPrefs; - @Rule - public ExpectedException thrown = ExpectedException.none(); + @Rule public ExpectedException thrown = ExpectedException.none(); @Before public void setUp() {