Bladeren bron

bugtraq: Fallback to UTF-8 if commit encoding is unsupported

Reading the encoding of a commit can result in a Unsupported- or
IllegalCharsetException. This happens when for whatever reason the
commit has an encoding recorded that the system doesn't understand.
Instead of completely failing, fallback to UTF-8.
pull/1438/head
Florian Zschocke 1 jaar geleden
bovenliggende
commit
d00bdf2fee
1 gewijzigde bestanden met toevoegingen van 15 en 1 verwijderingen
  1. 15
    1
      src/main/bugtraq/com/syntevo/bugtraq/BugtraqConfig.java

+ 15
- 1
src/main/bugtraq/com/syntevo/bugtraq/BugtraqConfig.java Bestand weergeven

@@ -31,6 +31,9 @@ package com.syntevo.bugtraq;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -55,6 +58,8 @@ import org.eclipse.jgit.treewalk.filter.PathFilterGroup;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import static java.nio.charset.StandardCharsets.UTF_8;

public final class BugtraqConfig {

// Constants ==============================================================
@@ -229,7 +234,7 @@ public final class BugtraqConfig {
FileMode entmode = tw.getFileMode(0);
if (FileMode.REGULAR_FILE == entmode) {
ObjectLoader ldr = repository.open(entid, Constants.OBJ_BLOB);
content = new String(ldr.getCachedBytes(), commit.getEncoding());
content = new String(ldr.getCachedBytes(), guessEncoding(commit));
break;
}
}
@@ -265,6 +270,15 @@ public final class BugtraqConfig {
return baseConfig;
}

@NotNull
private static Charset guessEncoding(RevCommit commit) {
try {
return commit.getEncoding();
} catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
return UTF_8;
}
}

@Nullable
private static String getString(@Nullable String subsection, @NotNull String key, @NotNull Config config, @Nullable Config baseConfig) {
final String value = config.getString(BUGTRAQ, subsection, key);

Laden…
Annuleren
Opslaan