summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacek Centkowski <jcentkowski@collab.net>2018-09-03 16:23:54 +0200
committerJacek Centkowski <jcentkowski@collab.net>2018-09-03 17:44:51 +0200
commit1ee03aa948553654283702220cbf36798ac1e45e (patch)
tree8460649401ea30aca6ca6827caf5bbe4460689c1
parentcf97d694febd26aeea66c6f16355a721860f80fd (diff)
Account.java: introduce compiled pattern and use where applicable
There is no point in compiling USER_NAME_PATTERN over and over again in all those places where it is used hence compiled version was added. Note that original version was kept so that there is no collateral damage in plugins that use it. Change-Id: I8082b2ad3e04a6407e9c41f969a0e274386b63ab Signed-off-by: Jacek Centkowski <jcentkowski@collab.net>
-rw-r--r--gerrit-reviewdb/BUILD1
-rw-r--r--gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Account.java5
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java3
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java6
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java3
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/account/InvalidUserNameException.java5
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java4
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java4
8 files changed, 22 insertions, 9 deletions
diff --git a/gerrit-reviewdb/BUILD b/gerrit-reviewdb/BUILD
index 35c1535dad..67801447b5 100644
--- a/gerrit-reviewdb/BUILD
+++ b/gerrit-reviewdb/BUILD
@@ -16,6 +16,7 @@ gwt_module(
visibility = ["//visibility:public"],
deps = [
"//gerrit-extension-api:client",
+ "//lib:guava",
"//lib:gwtorm-client",
"//lib:gwtorm-client_src",
],
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Account.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Account.java
index a167ad209c..3bfdd6cac2 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Account.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Account.java
@@ -16,11 +16,13 @@ package com.google.gerrit.reviewdb.client;
import static com.google.gerrit.reviewdb.client.RefNames.REFS_USERS;
+import com.google.common.annotations.GwtIncompatible;
import com.google.gerrit.extensions.client.DiffPreferencesInfo;
import com.google.gerrit.extensions.client.GeneralPreferencesInfo;
import com.google.gwtorm.client.Column;
import com.google.gwtorm.client.IntKey;
import java.sql.Timestamp;
+import java.util.regex.Pattern;
/**
* Information about a single user.
@@ -66,6 +68,9 @@ public final class Account {
+ //
")$";
+ @GwtIncompatible("Unemulated class java.util.regex.Pattern")
+ public static final Pattern USER_NAME_PATTERN_COMPILED = Pattern.compile(USER_NAME_PATTERN);
+
/** Key local to Gerrit to identify a user. */
public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
private static final long serialVersionUID = 1L;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java
index 9803143247..90c876798d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.account;
+import static com.google.gerrit.reviewdb.client.Account.USER_NAME_PATTERN_COMPILED;
import static java.util.stream.Collectors.toSet;
import com.google.gerrit.reviewdb.client.Account;
@@ -105,7 +106,7 @@ public class AccountResolver {
return Collections.emptySet();
}
- if (nameOrEmail.matches(Account.USER_NAME_PATTERN)) {
+ if (USER_NAME_PATTERN_COMPILED.matcher(nameOrEmail).matches()) {
AccountState who = byId.getByUsername(nameOrEmail);
if (who != null) {
return Collections.singleton(who.getAccount().getId());
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java
index c9a7aabf21..ff3de30249 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/ChangeUserName.java
@@ -14,12 +14,12 @@
package com.google.gerrit.server.account;
+import static com.google.gerrit.reviewdb.client.Account.USER_NAME_PATTERN_COMPILED;
import static com.google.gerrit.server.account.ExternalId.SCHEME_USERNAME;
import static java.util.stream.Collectors.toSet;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.errors.NameAlreadyUsedException;
-import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.ssh.SshKeyCache;
@@ -31,7 +31,6 @@ import com.google.inject.assistedinject.Assisted;
import java.io.IOException;
import java.util.Collection;
import java.util.concurrent.Callable;
-import java.util.regex.Pattern;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,7 +38,6 @@ import org.slf4j.LoggerFactory;
/** Operation to change the username of an account. */
public class ChangeUserName implements Callable<VoidResult> {
private static final Logger log = LoggerFactory.getLogger(ChangeUserName.class);
- private static final Pattern USER_NAME_PATTERN = Pattern.compile(Account.USER_NAME_PATTERN);
public static final String USERNAME_CANNOT_BE_CHANGED = "Username cannot be changed.";
@@ -90,7 +88,7 @@ public class ChangeUserName implements Callable<VoidResult> {
ExternalIdsUpdate externalIdsUpdate = externalIdsUpdateFactory.create();
if (newUsername != null && !newUsername.isEmpty()) {
- if (!USER_NAME_PATTERN.matcher(newUsername).matches()) {
+ if (!USER_NAME_PATTERN_COMPILED.matcher(newUsername).matches()) {
throw new InvalidUserNameException();
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java
index 1f14b1980c..c166981d67 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.account;
import static com.google.gerrit.reviewdb.client.Account.USER_NAME_PATTERN;
+import static com.google.gerrit.reviewdb.client.Account.USER_NAME_PATTERN_COMPILED;
import static com.google.gerrit.server.account.ExternalId.SCHEME_MAILTO;
import com.google.gerrit.audit.AuditService;
@@ -112,7 +113,7 @@ public class CreateAccount implements RestModifyView<TopLevelResource, AccountIn
throw new BadRequestException("username must match URL");
}
- if (!username.matches(Account.USER_NAME_PATTERN)) {
+ if (!USER_NAME_PATTERN_COMPILED.matcher(username).matches()) {
throw new BadRequestException(
"Username '" + username + "' must comply with [" + USER_NAME_PATTERN + "] pattern.");
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/InvalidUserNameException.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/InvalidUserNameException.java
index d60b7af85f..cf7a9b8df9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/InvalidUserNameException.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/InvalidUserNameException.java
@@ -16,7 +16,10 @@ package com.google.gerrit.server.account;
import com.google.gerrit.reviewdb.client.Account;
-/** Error indicating the SSH user name does not match {@link Account#USER_NAME_PATTERN} pattern. */
+/**
+ * Error indicating the SSH user name does not match {@link Account#USER_NAME_PATTERN_COMPILED}
+ * pattern.
+ */
public class InvalidUserNameException extends Exception {
private static final long serialVersionUID = 1L;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java
index 75628015bb..902726ab5f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java
@@ -14,6 +14,8 @@
package com.google.gerrit.server.args4j;
+import static com.google.gerrit.reviewdb.client.Account.USER_NAME_PATTERN_COMPILED;
+
import com.google.gerrit.extensions.client.AuthType;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -90,7 +92,7 @@ public class AccountIdHandler extends OptionHandler<Account.Id> {
}
private Account.Id createAccountByLdap(String user) throws CmdLineException, IOException {
- if (!user.matches(Account.USER_NAME_PATTERN)) {
+ if (!USER_NAME_PATTERN_COMPILED.matcher(user).matches()) {
throw new CmdLineException(owner, "user \"" + user + "\" not found");
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java
index 5c1a292cde..6a828efe59 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java
@@ -14,6 +14,8 @@
package com.google.gerrit.server.group;
+import static com.google.gerrit.reviewdb.client.Account.USER_NAME_PATTERN_COMPILED;
+
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.gerrit.audit.AuditService;
@@ -198,7 +200,7 @@ public class AddMembers implements RestModifyView<GroupResource, Input> {
}
private Account createAccountByLdap(String user) throws IOException {
- if (!user.matches(Account.USER_NAME_PATTERN)) {
+ if (!USER_NAME_PATTERN_COMPILED.matcher(user).matches()) {
return null;
}