diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.java index e4cced7aa2..5dd8b3c536 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PermissionRuleEditor.java @@ -25,6 +25,7 @@ import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.PermissionRange; import com.google.gerrit.common.data.PermissionRule; +import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.SpanElement; @@ -178,16 +179,21 @@ public class PermissionRuleEditor extends Composite implements @Override public void setValue(PermissionRule value) { GroupReference ref = value.getGroup(); - if (ref.getUUID() != null) { + + boolean link; + if (ref.getUUID() != null && AccountGroup.isInternalGroup(ref.getUUID())) { + groupNameLink.setText(ref.getName()); groupNameLink.setTargetHistoryToken(Dispatcher.toGroup(ref.getUUID())); + link = true; + } else { + groupNameSpan.setInnerText(ref.getName()); + groupNameSpan.setTitle(ref.getUUID() != null ? ref.getUUID().get() : ""); + link = false; } - groupNameLink.setText(ref.getName()); - groupNameSpan.setInnerText(ref.getName()); deletedGroupName.setInnerText(ref.getName()); - - groupNameLink.setVisible(ref.getUUID() != null); - UIObject.setVisible(groupNameSpan, ref.getUUID() == null); + groupNameLink.setVisible(link); + UIObject.setVisible(groupNameSpan, !link); } @Override diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGroup.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGroup.java index 9f67fe8cf1..2ea659db61 100644 --- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGroup.java +++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountGroup.java @@ -79,6 +79,12 @@ public final class AccountGroup { } } + /** @return true if the UUID is for a group managed within Gerrit. */ + public static boolean isInternalGroup(AccountGroup.UUID uuid) { + return uuid.get().startsWith("global:") + || uuid.get().matches("[0-9a-f]{40}"); + } + /** Synthetic key to link to within the database */ public static class Id extends IntKey> { private static final long serialVersionUID = 1L; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java index 2335ded935..ad65499a5a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java @@ -57,8 +57,7 @@ public class InternalGroupBackend implements GroupBackend { @Override public boolean handles(AccountGroup.UUID uuid) { - return uuid.get().startsWith("global:") - || uuid.get().matches("[0-9a-f]{40}"); + return AccountGroup.isInternalGroup(uuid); } @Override