DestinationConfiguration: Use ImmutableList rather than array
Use ImmutableList rather than java array to store lists of String,
and refactor some usages of them to avoid creating local variables.
Change-Id: I7540f7b92a50faec0cc47af52ae71e2496b8f56e
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java b/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
index 6d85965..98a642e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.replication;
import com.google.common.base.Throwables;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSet.Builder;
@@ -57,7 +58,6 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -105,7 +105,7 @@
this.stateLog = stateLog;
final CurrentUser remoteUser;
- if (cfg.getAuthGroupNames().length > 0) {
+ if (!cfg.getAuthGroupNames().isEmpty()) {
ImmutableSet.Builder<AccountGroup.UUID> builder = ImmutableSet.builder();
for (String name : cfg.getAuthGroupNames()) {
GroupReference g = GroupBackends.findExactSuggestion(groupBackend, name);
@@ -390,19 +390,19 @@
}
// by default push all projects
- String[] projects = config.getProjects();
- if (projects.length < 1) {
+ List<String> projects = config.getProjects();
+ if (projects.isEmpty()) {
return true;
}
- return (new ReplicationFilter(Arrays.asList(projects))).matches(project);
+ return (new ReplicationFilter(projects)).matches(project);
}
boolean isSingleProjectMatch() {
- String[] projects = config.getProjects();
- boolean ret = (projects.length == 1);
+ List<String> projects = config.getProjects();
+ boolean ret = (projects.size() == 1);
if (ret) {
- String projectMatch = projects[0];
+ String projectMatch = projects.get(0);
if (ReplicationFilter.getPatternType(projectMatch)
!= ReplicationFilter.PatternType.EXACT_MATCH) {
// projectMatch is either regular expression, or wild-card.
@@ -493,23 +493,22 @@
}
}
- String[] getAdminUrls() {
+ ImmutableList<String> getAdminUrls() {
return config.getAdminUrls();
}
- String[] getUrls() {
+ ImmutableList<String> getUrls() {
return config.getUrls();
}
- String[] getAuthGroupNames() {
+ ImmutableList<String> getAuthGroupNames() {
return config.getAuthGroupNames();
}
- String[] getProjects() {
+ ImmutableList<String> getProjects() {
return config.getProjects();
}
-
int getLockErrorMaxRetries() {
return config.getLockErrorMaxRetries();
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationConfiguration.java b/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationConfiguration.java
index 6b39960..6beb644 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationConfiguration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationConfiguration.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.replication;
import com.google.common.base.MoreObjects;
+import com.google.common.collect.ImmutableList;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.transport.RemoteConfig;
@@ -23,27 +24,31 @@
private final int delay;
private final int retryDelay;
private final int lockErrorMaxRetries;
- private final String[] adminUrls;
+ private final ImmutableList<String> adminUrls;
private final int poolThreads;
private final boolean createMissingRepos;
private final boolean replicatePermissions;
private final boolean replicateProjectDeletions;
private final String remoteNameStyle;
- private final String[] urls;
- private final String[] projects;
- private final String[] authGroupNames;
+ private final ImmutableList<String> urls;
+ private final ImmutableList<String> projects;
+ private final ImmutableList<String> authGroupNames;
private final RemoteConfig remoteConfig;
DestinationConfiguration(RemoteConfig remoteConfig, Config cfg) {
this.remoteConfig = remoteConfig;
String name = remoteConfig.getName();
- urls = cfg.getStringList("remote", name, "url");
+ urls = ImmutableList.copyOf(
+ cfg.getStringList("remote", name, "url"));
delay = Math.max(0, getInt(remoteConfig, cfg, "replicationdelay", 15));
- projects = cfg.getStringList("remote", name, "projects");
- adminUrls = cfg.getStringList("remote", name, "adminUrl");
+ projects = ImmutableList.copyOf(
+ cfg.getStringList("remote", name, "projects"));
+ adminUrls = ImmutableList.copyOf(
+ cfg.getStringList("remote", name, "adminUrl"));
retryDelay = Math.max(0, getInt(remoteConfig, cfg, "replicationretry", 1));
poolThreads = Math.max(0, getInt(remoteConfig, cfg, "threads", 1));
- authGroupNames = cfg.getStringList("remote", name, "authGroup");
+ authGroupNames = ImmutableList.copyOf(
+ cfg.getStringList("remote", name, "authGroup"));
lockErrorMaxRetries = cfg.getInt("replication", "lockErrorMaxRetries", 0);
createMissingRepos =
@@ -72,19 +77,19 @@
return lockErrorMaxRetries;
}
- public String[] getUrls() {
+ public ImmutableList<String> getUrls() {
return urls;
}
- public String[] getAdminUrls() {
+ public ImmutableList<String> getAdminUrls() {
return adminUrls;
}
- public String[] getProjects() {
+ public ImmutableList<String> getProjects() {
return projects;
}
- public String[] getAuthGroupNames() {
+ public ImmutableList<String> getAuthGroupNames() {
return authGroupNames;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ListCommand.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ListCommand.java
index 0372d2b..247ebf7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ListCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ListCommand.java
@@ -29,6 +29,7 @@
import org.kohsuke.args4j.Option;
import java.util.Collection;
+import java.util.List;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "list", description = "List remote destination information")
@@ -60,8 +61,8 @@
|| name.matches(remote));
}
- private void addProperty(JsonObject obj, String key, String[] values) {
- if (values.length > 0) {
+ private void addProperty(JsonObject obj, String key, List<String> values) {
+ if (!values.isEmpty()) {
JsonArray list = new JsonArray();
for (String v : values) {
list.add(new JsonPrimitive(v));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java
index 31f8c57..40b2bee 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java
@@ -52,7 +52,6 @@
import java.io.OutputStream;
import java.net.URISyntaxException;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
/** Manages automatic replication to remote repositories. */
@@ -195,11 +194,9 @@
continue;
}
- List<URIish> uriList = config.getURIs(projectName, "*");
- String[] adminUrls = config.getAdminUrls();
boolean adminURLUsed = false;
- for (String url : adminUrls) {
+ for (String url : config.getAdminUrls()) {
if (Strings.isNullOrEmpty(url)) {
continue;
}
@@ -233,7 +230,7 @@
}
if (!adminURLUsed) {
- for (URIish uri : uriList) {
+ for (URIish uri : config.getURIs(projectName, "*")) {
uris.add(uri);
}
}