summaryrefslogtreecommitdiffstats
path: root/src/main/java/com
diff options
context:
space:
mode:
authorFlorian Zschocke <f.zschocke+git@gmail.com>2022-11-11 11:58:23 +0100
committerFlorian Zschocke <f.zschocke+git@gmail.com>2022-11-11 11:58:23 +0100
commitaad622a6933a8e334aea8c8b8a644a1b6e39bc61 (patch)
tree6e35958ee0356988e3316c044d2e8992a82bd990 /src/main/java/com
parent9186cf7f1196aacce486558b5b18751b548aea17 (diff)
downloadgitblit-aad622a6933a8e334aea8c8b8a644a1b6e39bc61.tar.gz
gitblit-aad622a6933a8e334aea8c8b8a644a1b6e39bc61.zip
Remove workaround for JGit crashing on 'utf-9' etc
Updating JGit fixed the issue that a commit in a repo with an unknown character set throws an exception. This would crash the RepositoryManager. The extra handling, which patches JGit classes during runtime is completely removed.
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/gitblit/manager/RepositoryManager.java43
-rw-r--r--src/main/java/com/gitblit/utils/MapUtils.java116
2 files changed, 0 insertions, 159 deletions
diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java
index efbdef6a..8d18c811 100644
--- a/src/main/java/com/gitblit/manager/RepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -19,11 +19,8 @@ import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
import java.net.URI;
import java.net.URISyntaxException;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -55,7 +52,6 @@ import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.storage.file.WindowCacheConfig;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
-import org.eclipse.jgit.util.RawParseUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -89,7 +85,6 @@ import com.gitblit.utils.CommitCache;
import com.gitblit.utils.DeepCopier;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.LastChange;
-import com.gitblit.utils.MapUtils;
import com.gitblit.utils.MetricUtils;
import com.gitblit.utils.ModelUtils;
import com.gitblit.utils.ObjectCache;
@@ -1927,7 +1922,6 @@ public class RepositoryManager implements IRepositoryManager {
}
}
- @SuppressWarnings("unchecked")
protected void configureJGit() {
// Configure JGit
WindowCacheConfig cfg = new WindowCacheConfig();
@@ -1948,43 +1942,6 @@ public class RepositoryManager implements IRepositoryManager {
} catch (IllegalArgumentException e) {
logger.error("Failed to configure JGit parameters!", e);
}
-
- try {
- // issue-486/ticket-151: UTF-9 & UTF-18
- // issue-560/ticket-237: 'UTF8'
- Field field = RawParseUtils.class.getDeclaredField("encodingAliases");
- field.setAccessible(true);
-
- Map<String, Charset> encodingAliases;
-
- try {
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
-
- // Since unknown encodingAliases cause GitBlit to crash we replace the
- // map by a wrapper class that always returns a value. ISO-8859-1 seems
- // appropriate since it is a fixed 8-bit encoding.
- encodingAliases = (Map<String, Charset>) field.get(null);
- encodingAliases = MapUtils.defaultMap(encodingAliases, StandardCharsets.ISO_8859_1);
- field.set(null, encodingAliases);
-
- modifiersField.setInt(field, field.getModifiers() | Modifier.FINAL);
- modifiersField.setAccessible(false);
- } catch(Throwable t) {
- logger.error("Failed to inject wrapper class for encoding Aliases", t);
- encodingAliases = (Map<String, Charset>) field.get(null);
- }
-
- // Provided sensible default mappings
- encodingAliases.put("'utf8'", RawParseUtils.UTF8_CHARSET);
- encodingAliases.put("utf-9", RawParseUtils.UTF8_CHARSET);
- encodingAliases.put("utf-18", RawParseUtils.UTF8_CHARSET);
-
- logger.info("Alias 'UTF8', UTF-9 & UTF-18 encodings as UTF-8 in JGit");
- } catch (Throwable t) {
- logger.error("Failed to inject UTF-9 & UTF-18 encoding aliases into JGit", t);
- }
}
protected void configureCommitCache() {
diff --git a/src/main/java/com/gitblit/utils/MapUtils.java b/src/main/java/com/gitblit/utils/MapUtils.java
deleted file mode 100644
index 98568780..00000000
--- a/src/main/java/com/gitblit/utils/MapUtils.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.gitblit.utils;
-
-import java.text.MessageFormat;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.mina.util.ConcurrentHashSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A utility wrapper class to generate a default value over an existing map
- *
- * @author Jan Vanhercke
- *
- */
-public class MapUtils {
-
- private static final Logger logger = LoggerFactory.getLogger(MapUtils.class);
-
- public static <K, V> Map<K, V> defaultMap(Map<K, V> delegate, V value) {
- return new Wrap<>(delegate, value);
- }
-
- private static class Wrap<K, V> implements Map<K, V> {
-
- private Map<K, V> delegate;
-
- // HashSet is only used to reduce logging
-
- private Set<K> unknownKeys = new ConcurrentHashSet<>();
-
- private V value;
-
- private Wrap(Map<K, V> delegate, V value) {
- this.delegate = delegate;
- this.value = value;
- }
-
- @Override
- public int size() {
- return delegate.size();
- }
-
- @Override
- public boolean isEmpty() {
- return delegate.isEmpty();
- }
-
- @Override
- public boolean containsKey(Object key) {
- return true;
- }
-
- @Override
- public boolean containsValue(Object value) {
- return true;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public V get(Object key) {
- V retv = delegate.get(key);
-
- if (retv == null) {
- if (unknownKeys.add((K) key))
- logger.error(MessageFormat.format("Default value {0} generated for key {1}", value, key));
-
- return value;
- }
-
- return retv;
- }
-
- @Override
- public V put(K key, V value) {
- return delegate.put(key, value);
- }
-
- @Override
- public V remove(Object key) {
- V retv = delegate.remove(key);
-
- if (retv == null)
- return value;
-
- return value;
- }
-
- @Override
- public void putAll(Map<? extends K, ? extends V> m) {
- delegate.putAll(m);
- }
-
- @Override
- public void clear() {
- delegate.clear();
- }
-
- @Override
- public Set<K> keySet() {
- return delegate.keySet();
- }
-
- @Override
- public Collection<V> values() {
- return delegate.values();
- }
-
- @Override
- public Set<java.util.Map.Entry<K, V>> entrySet() {
- return delegate.entrySet();
- }
- }
-}