Leverage JGit 3.2 new Config.getNames()
From JGit 3.2 it is possible now to get recursively
all the list of config names associated to a section
from both gerrit.config and secure.config merged
together.
There is no need anymore of composing them manually
through the CompositeConfig workaround.
Change-Id: Iefdad16c9c65591113adfc43dcc130c54345c6b6
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/CompositeConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/CompositeConfig.java
deleted file mode 100644
index 76b4ce6..0000000
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/CompositeConfig.java
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright (C) 2014 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.googlesource.gerrit.plugins.github.oauth;
-
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jgit.errors.ConfigInvalidException;
-import org.eclipse.jgit.events.ConfigChangedListener;
-import org.eclipse.jgit.events.ListenerHandle;
-import org.eclipse.jgit.lib.Config;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.gerrit.server.config.GerritServerConfig;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-public class CompositeConfig extends Config {
- private final Config secureConfig;
- private final Config gerritConfig;
-
- @Inject
- public CompositeConfig(@GerritServerConfig Config config) {
- this.secureConfig = config;
- try {
- Field baseConfigField = Config.class.getDeclaredField("baseConfig");
- baseConfigField.setAccessible(true);
- this.gerritConfig = (Config) baseConfigField.get(config);
- } catch (SecurityException|NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
- throw new IllegalArgumentException("JGit baseConfig cannot be accessed from GerritServerConfig", e);
- }
- }
-
- public ListenerHandle addChangeListener(ConfigChangedListener listener) {
- return secureConfig.addChangeListener(listener);
- }
-
- public boolean equals(Object obj) {
- return secureConfig.equals(obj);
- }
-
- public int getInt(String section, String name, int defaultValue) {
- return secureConfig.getInt(section, name, defaultValue);
- }
-
- public int getInt(String section, String subsection, String name,
- int defaultValue) {
- return secureConfig.getInt(section, subsection, name, defaultValue);
- }
-
- public long getLong(String section, String name, long defaultValue) {
- return secureConfig.getLong(section, name, defaultValue);
- }
-
- public long getLong(String section, String subsection, String name,
- long defaultValue) {
- return secureConfig.getLong(section, subsection, name, defaultValue);
- }
-
- public boolean getBoolean(String section, String name, boolean defaultValue) {
- return secureConfig.getBoolean(section, name, defaultValue);
- }
-
- public boolean getBoolean(String section, String subsection, String name,
- boolean defaultValue) {
- return secureConfig.getBoolean(section, subsection, name, defaultValue);
- }
-
- public <T extends Enum<?>> T getEnum(String section, String subsection,
- String name, T defaultValue) {
- return secureConfig.getEnum(section, subsection, name, defaultValue);
- }
-
- public <T extends Enum<?>> T getEnum(T[] all, String section,
- String subsection, String name, T defaultValue) {
- return secureConfig.getEnum(all, section, subsection, name, defaultValue);
- }
-
- public Set<String> getNames(String section) {
- return getNames(section, null);
- }
-
- public Set<String> getNames(String section, String subsection) {
- return new ImmutableSet.Builder<String>()
- .addAll(secureConfig.getNames(section, subsection))
- .addAll(gerritConfig.getNames(section, subsection))
- .build();
- }
-
- public <T> T get(SectionParser<T> parser) {
- return secureConfig.get(parser);
- }
-
- public void fromText(String text) throws ConfigInvalidException {
- secureConfig.fromText(text);
- }
-
- public Set<String> getNames(String section, boolean recursive) {
- return secureConfig.getNames(section, recursive);
- }
-
- public Set<String> getNames(String section, String subsection,
- boolean recursive) {
- return secureConfig.getNames(section, subsection, recursive);
- }
-
- public String getString(String section, String subsection, String name) {
- return secureConfig.getString(section, subsection, name);
- }
-
- public String[] getStringList(String section, String subsection, String name) {
- return secureConfig.getStringList(section, subsection, name);
- }
-
- public Set<String> getSubsections(String section) {
- return secureConfig.getSubsections(section);
- }
-
- public Set<String> getSections() {
- return secureConfig.getSections();
- }
-
- public int hashCode() {
- return secureConfig.hashCode();
- }
-
- public void uncache(SectionParser<?> parser) {
- secureConfig.uncache(parser);
- }
-
- public void setInt(String section, String subsection, String name, int value) {
- secureConfig.setInt(section, subsection, name, value);
- }
-
- public void setLong(String section, String subsection, String name, long value) {
- secureConfig.setLong(section, subsection, name, value);
- }
-
- public void setBoolean(String section, String subsection, String name,
- boolean value) {
- secureConfig.setBoolean(section, subsection, name, value);
- }
-
- public <T extends Enum<?>> void setEnum(String section, String subsection,
- String name, T value) {
- secureConfig.setEnum(section, subsection, name, value);
- }
-
- public void setString(String section, String subsection, String name,
- String value) {
- secureConfig.setString(section, subsection, name, value);
- }
-
- public void unset(String section, String subsection, String name) {
- secureConfig.unset(section, subsection, name);
- }
-
- public void setStringList(String section, String subsection, String name,
- List<String> values) {
- secureConfig.setStringList(section, subsection, name, values);
- }
-
- public String toString() {
- return secureConfig.toString();
- }
-
- public void unsetSection(String section, String subsection) {
- secureConfig.unsetSection(section, subsection);
- }
-
- public String toText() {
- return secureConfig.toText();
- }
-}
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
index 0a07ec1..5a5f91f 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
@@ -20,10 +20,13 @@
import java.util.Map;
import java.util.Set;
+import org.eclipse.jgit.lib.Config;
+
import com.google.common.base.Objects;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.google.gerrit.reviewdb.client.AuthType;
+import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.googlesource.gerrit.plugins.github.oauth.OAuthProtocol.Scope;
@@ -51,10 +54,10 @@
public final Map<String, List<OAuthProtocol.Scope>> scopes;
public final int fileUpdateMaxRetryCount;
public final int fileUpdateMaxRetryIntervalMsec;
- public final CompositeConfig gerritConfig;
+ public final Config gerritConfig;
@Inject
- public GitHubOAuthConfig(CompositeConfig config)
+ public GitHubOAuthConfig(@GerritServerConfig Config config)
throws MalformedURLException {
this.gerritConfig = config;
@@ -79,9 +82,9 @@
fileUpdateMaxRetryIntervalMsec = config.getInt(CONF_SECTION, "fileUpdateMaxRetryIntervalMsec", 3000);
}
- private Map<String, List<Scope>> getScopes(CompositeConfig config) {
+ private Map<String, List<Scope>> getScopes(Config config) {
Map<String, List<Scope>> scopes = Maps.newHashMap();
- Set<String> configKeys = config.getNames(CONF_SECTION);
+ Set<String> configKeys = config.getNames(CONF_SECTION, true);
for (String key : configKeys) {
if (key.startsWith("scopes")) {
String scopesString = config.getString(CONF_SECTION, null, key);