diff --git a/CHANGELOG.md b/CHANGELOG.md
index aacb7819b24..6ffa4e88747 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `#
- We fixed an issue where the ampersand character wasn't rendering correctly on previews. [#3840](https://github.com/JabRef/jabref/issues/3840)
- We fixed an issue where an erroneous "The library has been modified by another program" message was shown when saving. [#4877](https://github.com/JabRef/jabref/issues/4877)
- We fixed an issue where the file extension was missing after downloading a file (we now fall-back to pdf). [#5816](https://github.com/JabRef/jabref/issues/5816)
+- We fixed an issue where cleaning up entries broke web URLs, if "Make paths of linked files relative (if possible)" was enabled, which resulted in various other issues subsequently. [#5861](https://github.com/JabRef/jabref/issues/5861)
### Removed
- Ampersands are no longer escaped by default in the `bib` file. If you want to keep the current behaviour, you can use the new "Escape Ampersands" formatter as a save action.
diff --git a/README.md b/README.md
index ff5ab937253..55c60c049a3 100644
--- a/README.md
+++ b/README.md
@@ -87,7 +87,7 @@ We view pull requests as a collaborative process.
Submit a pull request early to get feedback from the team on work in progress.
We will discuss improvements with you and agree to merge them once the [developers](https://github.com/JabRef/jabref/blob/master/DEVELOPERS) approve.
-If you want a step-by-step walk-through on how to set-up your workspace, please check [this guideline](https://github.com/JabRef/jabref/wiki/Guidelines-for-setting-up-a-local-workspace).
+If you want a step-by-step walk-through on how to set-up your workspace, please check [this guideline](https://devdocs.jabref.org/guidelines-for-setting-up-a-local-workspace/).
To compile JabRef from source, you need a Java Development Kit 13 and `JAVA_HOME` pointing to this JDK.
To run it, just execute `gradlew run`.
diff --git a/docs/development-strategy.md b/docs/development-strategy.md
index 333f39b1885..083e146728a 100644
--- a/docs/development-strategy.md
+++ b/docs/development-strategy.md
@@ -6,9 +6,9 @@ To ensure high code-quality,
- we follow the priniciples of [Java by Comparison](https://java.by-comparison.com/).
- we follow the principles of [Effetcive Java](https://www.oreilly.com/library/view/effective-java-3rd/9780134686097/).
-- we use [Design Pattners](https://java-design-patterns.com/patterns/) wherever possible.
+- we use [Design Pattners](https://java-design-patterns.com/patterns/) when applicable.
- we document our design decisions using the lightweight architectural decision records [MADR](https://adr.github.io/madr/).
-- we review each pull request by at least two [JabRef Core Developers](https://github.com/JabRef/jabref/blob/master/DEVELOPERS).
+- we review each external pull request by at least two [JabRef Core Developers](https://github.com/JabRef/jabref/blob/master/DEVELOPERS).
## Continuos integration
@@ -22,6 +22,7 @@ The branch [master](https://builds.jabref.org/master/) is the main development l
Other branches are used for discussing improvements with the help of [pull requests](https://github.com/JabRef/jabref/pulls).
One can see the binaries of each branch at .
+Releases mark milestones and are based on the master at a point in time.
## How JabRef aquires contributors
diff --git a/docs/guidelines-for-setting-up-a-local-workspace.md b/docs/guidelines-for-setting-up-a-local-workspace.md
index 472ae0dcad3..219fc14694c 100644
--- a/docs/guidelines-for-setting-up-a-local-workspace.md
+++ b/docs/guidelines-for-setting-up-a-local-workspace.md
@@ -77,12 +77,13 @@ Under Ubuntu Linux, you can follow the [documentation from the Ubuntu Community]
--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix
--patch-module org.jabref=build/resources/main
```
-4. Optional: Use IntellJ to build and run (instead of gradle): File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Under "Build and run using" and "Run tests using" choose "Intellj IDEA"
-5. Use the provided code style:
- 1. Install the [CheckStyle-IDEA plugin](http://plugins.jetbrains.com/plugin/1065?pr=idea), it can be found via plug-in repository (File > Settings > Plugins > Browse repositories).
+4. Use IntellJ to build and run (instead of gradle): File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> At "Build and run using" and "Run tests using" choose "Intellj IDEA"
+4. Ensure that JDK13 is enabled for Gradle: Use IntellJ to build and run (instead of gradle): File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle -> Gradle JVM
+5. Use the provided code style:
+ 1. Install the [CheckStyle-IDEA plugin](http://plugins.jetbrains.com/plugin/1065?pr=idea), it can be found via plug-in repository (File > Settings > Plugins > Marketplace -> Search for "Checkstyle" and choose "CheckStyle-IDEA). Close the settings afterwards and restart IntelliJ.
2. Go to File > Settings > Editor > Code Style, choose a code style (or create a new one)
- 3. Click on the settings wheel (next to the scheme chooser), then Import scheme and choose "CheckStyle Configuration". Select the CheckStyle configuration file `config\checkstyle\checkstyle.xml`. Click OK and restart IntelliJ.
- 4. Go to File -> Settings -> Checkstyle and import the above CheckStyle configuration file. Activate it.
+ 3. Click on the settings wheel (next to the scheme chooser), then click "Import Scheme" and choose "IntelliJ Code Style xml". Select the IntelliJ configuration file `config/IntelliJ Code Style.xml`. Click OK.
+ 4. Go to File -> Settings -> Checkstyle and import the CheckStyle configuration file. Activate it.
6. Use the provided run configuration: Run -> Run "JabRef Main"
### Set-up Eclipse
diff --git a/src/main/java/org/jabref/logic/cleanup/RelativePathsCleanup.java b/src/main/java/org/jabref/logic/cleanup/RelativePathsCleanup.java
index 9b18e939782..1bbecb2f41c 100644
--- a/src/main/java/org/jabref/logic/cleanup/RelativePathsCleanup.java
+++ b/src/main/java/org/jabref/logic/cleanup/RelativePathsCleanup.java
@@ -33,10 +33,17 @@ public List cleanup(BibEntry entry) {
for (LinkedFile fileEntry : fileList) {
String oldFileName = fileEntry.getLink();
- String newFileName = FileUtil
- .relativize(Paths.get(oldFileName), databaseContext.getFileDirectoriesAsPaths(filePreferences))
- .toString();
-
+ String newFileName = null;
+ if (fileEntry.isOnlineLink()) {
+ // keep online link untouched
+ newFileName = oldFileName;
+ }
+ else {
+ // only try to transform local file path to relative one
+ newFileName = FileUtil
+ .relativize(Paths.get(oldFileName), databaseContext.getFileDirectoriesAsPaths(filePreferences))
+ .toString();
+ }
LinkedFile newFileEntry = fileEntry;
if (!oldFileName.equals(newFileName)) {
newFileEntry = new LinkedFile(fileEntry.getDescription(), newFileName, fileEntry.getFileType());
@@ -56,5 +63,4 @@ public List cleanup(BibEntry entry) {
return Collections.emptyList();
}
-
}
diff --git a/src/main/java/org/jabref/model/entry/LinkedFile.java b/src/main/java/org/jabref/model/entry/LinkedFile.java
index 62a71dac417..3c79ffd6812 100644
--- a/src/main/java/org/jabref/model/entry/LinkedFile.java
+++ b/src/main/java/org/jabref/model/entry/LinkedFile.java
@@ -135,10 +135,11 @@ private void readObject(ObjectInputStream in) throws IOException {
/**
* Checks if the given String is an online link
* @param toCheck The String to check
- * @return True if it starts with http://, https:// or contains www; false otherwise
+ * @return true
, if it starts with "http://", "https://" or contains "www."; false
otherwise
*/
private boolean isOnlineLink(String toCheck) {
- return toCheck.startsWith("http://") || toCheck.startsWith("https://") || toCheck.contains("www.");
+ String normalizedFilePath = toCheck.trim().toLowerCase();
+ return normalizedFilePath.startsWith("http://") || normalizedFilePath.startsWith("https://") || normalizedFilePath.contains("www.");
}
@Override