Allow group includes to be by UUID instead of group ID
Per discussion on-list, the behavior change in 2.5 to only allow groups by ID is considered a regression for groups that want to include external groups (like LDAP). In order to permit smooth migration, we want to allow both ID and UUIDs to co-exist for the time being. Change-Id: I0dbdb15b9c62f2dbce64acbc34c515c7b8229c04
This commit is contained in:
@@ -18,7 +18,7 @@ import com.google.gwtorm.client.Column;
|
||||
import com.google.gwtorm.client.CompoundKey;
|
||||
|
||||
/** Membership of an {@link AccountGroup} in an {@link AccountGroup}. */
|
||||
public final class AccountGroupInclude {
|
||||
public final class AccountGroupIncludeByUuid {
|
||||
public static class Key extends CompoundKey<AccountGroup.Id> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -26,16 +26,16 @@ public final class AccountGroupInclude {
|
||||
protected AccountGroup.Id groupId;
|
||||
|
||||
@Column(id = 2)
|
||||
protected AccountGroup.Id includeId;
|
||||
protected AccountGroup.UUID includeUUID;
|
||||
|
||||
protected Key() {
|
||||
groupId = new AccountGroup.Id();
|
||||
includeId = new AccountGroup.Id();
|
||||
includeUUID = new AccountGroup.UUID();
|
||||
}
|
||||
|
||||
public Key(final AccountGroup.Id g, final AccountGroup.Id i) {
|
||||
public Key(final AccountGroup.Id g, final AccountGroup.UUID u) {
|
||||
groupId = g;
|
||||
includeId = i;
|
||||
includeUUID = u;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,27 +47,27 @@ public final class AccountGroupInclude {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
public AccountGroup.Id getIncludeId() {
|
||||
return includeId;
|
||||
public AccountGroup.UUID getIncludeUUID() {
|
||||
return includeUUID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public com.google.gwtorm.client.Key<?>[] members() {
|
||||
return new com.google.gwtorm.client.Key<?>[] {includeId};
|
||||
return new com.google.gwtorm.client.Key<?>[] {includeUUID};
|
||||
}
|
||||
}
|
||||
|
||||
@Column(id = 1, name = Column.NONE)
|
||||
protected Key key;
|
||||
|
||||
protected AccountGroupInclude() {
|
||||
protected AccountGroupIncludeByUuid() {
|
||||
}
|
||||
|
||||
public AccountGroupInclude(final AccountGroupInclude.Key k) {
|
||||
public AccountGroupIncludeByUuid(final AccountGroupIncludeByUuid.Key k) {
|
||||
key = k;
|
||||
}
|
||||
|
||||
public AccountGroupInclude.Key getKey() {
|
||||
public AccountGroupIncludeByUuid.Key getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public final class AccountGroupInclude {
|
||||
return key.groupId;
|
||||
}
|
||||
|
||||
public AccountGroup.Id getIncludeId() {
|
||||
return key.includeId;
|
||||
public AccountGroup.UUID getIncludeUUID() {
|
||||
return key.includeUUID;
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,7 @@ import com.google.gwtorm.client.CompoundKey;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
/** Inclusion of an {@link AccountGroup} in another {@link AccountGroup}. */
|
||||
public final class AccountGroupIncludeAudit {
|
||||
public final class AccountGroupIncludeByUuidAudit {
|
||||
public static class Key extends CompoundKey<AccountGroup.Id> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -28,19 +28,19 @@ public final class AccountGroupIncludeAudit {
|
||||
protected AccountGroup.Id groupId;
|
||||
|
||||
@Column(id = 2)
|
||||
protected AccountGroup.Id includeId;
|
||||
protected AccountGroup.UUID includeUUID;
|
||||
|
||||
@Column(id = 3)
|
||||
protected Timestamp addedOn;
|
||||
|
||||
protected Key() {
|
||||
groupId = new AccountGroup.Id();
|
||||
includeId = new AccountGroup.Id();
|
||||
includeUUID = new AccountGroup.UUID();
|
||||
}
|
||||
|
||||
public Key(final AccountGroup.Id g, final AccountGroup.Id i, final Timestamp t) {
|
||||
public Key(final AccountGroup.Id g, final AccountGroup.UUID u, final Timestamp t) {
|
||||
groupId = g;
|
||||
includeId = i;
|
||||
includeUUID = u;
|
||||
addedOn = t;
|
||||
}
|
||||
|
||||
@@ -49,8 +49,8 @@ public final class AccountGroupIncludeAudit {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
public AccountGroup.Id getIncludedId() {
|
||||
return includeId;
|
||||
public AccountGroup.UUID getIncludeUUID() {
|
||||
return includeUUID;
|
||||
}
|
||||
|
||||
public Timestamp getAddedOn() {
|
||||
@@ -59,7 +59,7 @@ public final class AccountGroupIncludeAudit {
|
||||
|
||||
@Override
|
||||
public com.google.gwtorm.client.Key<?>[] members() {
|
||||
return new com.google.gwtorm.client.Key<?>[] {includeId};
|
||||
return new com.google.gwtorm.client.Key<?>[] {includeUUID};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,18 +75,23 @@ public final class AccountGroupIncludeAudit {
|
||||
@Column(id = 4, notNull = false)
|
||||
protected Timestamp removedOn;
|
||||
|
||||
protected AccountGroupIncludeAudit() {
|
||||
protected AccountGroupIncludeByUuidAudit() {
|
||||
}
|
||||
|
||||
public AccountGroupIncludeAudit(final AccountGroupInclude m,
|
||||
final Account.Id adder) {
|
||||
public AccountGroupIncludeByUuidAudit(final AccountGroupIncludeByUuid m,
|
||||
final Account.Id adder, final Timestamp when) {
|
||||
final AccountGroup.Id group = m.getGroupId();
|
||||
final AccountGroup.Id include = m.getIncludeId();
|
||||
key = new AccountGroupIncludeAudit.Key(group, include, now());
|
||||
final AccountGroup.UUID include = m.getIncludeUUID();
|
||||
key = new AccountGroupIncludeByUuidAudit.Key(group, include, when);
|
||||
addedBy = adder;
|
||||
}
|
||||
|
||||
public AccountGroupIncludeAudit.Key getKey() {
|
||||
public AccountGroupIncludeByUuidAudit(final AccountGroupIncludeByUuid m,
|
||||
final Account.Id adder) {
|
||||
this(m, adder, now());
|
||||
}
|
||||
|
||||
public AccountGroupIncludeByUuidAudit.Key getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@@ -99,7 +104,12 @@ public final class AccountGroupIncludeAudit {
|
||||
removedOn = now();
|
||||
}
|
||||
|
||||
public void removed(final Account.Id deleter, final Timestamp when) {
|
||||
removedBy = deleter;
|
||||
removedOn = when;
|
||||
}
|
||||
|
||||
private static Timestamp now() {
|
||||
return new Timestamp(System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,21 +15,21 @@
|
||||
package com.google.gerrit.reviewdb.server;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupInclude;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuid;
|
||||
import com.google.gwtorm.server.Access;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.gwtorm.server.PrimaryKey;
|
||||
import com.google.gwtorm.server.Query;
|
||||
import com.google.gwtorm.server.ResultSet;
|
||||
|
||||
public interface AccountGroupIncludeAccess extends
|
||||
Access<AccountGroupInclude, AccountGroupInclude.Key> {
|
||||
public interface AccountGroupIncludeByUuidAccess extends
|
||||
Access<AccountGroupIncludeByUuid, AccountGroupIncludeByUuid.Key> {
|
||||
@PrimaryKey("key")
|
||||
AccountGroupInclude get(AccountGroupInclude.Key key) throws OrmException;
|
||||
AccountGroupIncludeByUuid get(AccountGroupIncludeByUuid.Key key) throws OrmException;
|
||||
|
||||
@Query("WHERE key.includeId = ?")
|
||||
ResultSet<AccountGroupInclude> byInclude(AccountGroup.Id id) throws OrmException;
|
||||
@Query("WHERE key.includeUUID = ?")
|
||||
ResultSet<AccountGroupIncludeByUuid> byIncludeUUID(AccountGroup.UUID uuid) throws OrmException;
|
||||
|
||||
@Query("WHERE key.groupId = ?")
|
||||
ResultSet<AccountGroupInclude> byGroup(AccountGroup.Id id) throws OrmException;
|
||||
ResultSet<AccountGroupIncludeByUuid> byGroup(AccountGroup.Id id) throws OrmException;
|
||||
}
|
||||
@@ -15,20 +15,20 @@
|
||||
package com.google.gerrit.reviewdb.server;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeAudit;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuidAudit;
|
||||
import com.google.gwtorm.server.Access;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.gwtorm.server.PrimaryKey;
|
||||
import com.google.gwtorm.server.Query;
|
||||
import com.google.gwtorm.server.ResultSet;
|
||||
|
||||
public interface AccountGroupIncludeAuditAccess extends
|
||||
Access<AccountGroupIncludeAudit, AccountGroupIncludeAudit.Key> {
|
||||
public interface AccountGroupIncludeByUuidAuditAccess extends
|
||||
Access<AccountGroupIncludeByUuidAudit, AccountGroupIncludeByUuidAudit.Key> {
|
||||
@PrimaryKey("key")
|
||||
AccountGroupIncludeAudit get(AccountGroupIncludeAudit.Key key)
|
||||
AccountGroupIncludeByUuidAudit get(AccountGroupIncludeByUuidAudit.Key key)
|
||||
throws OrmException;
|
||||
|
||||
@Query("WHERE key.groupId = ? AND key.includeId = ?")
|
||||
ResultSet<AccountGroupIncludeAudit> byGroupInclude(AccountGroup.Id groupId,
|
||||
AccountGroup.Id incGroupId) throws OrmException;
|
||||
@Query("WHERE key.groupId = ? AND key.includeUUID = ?")
|
||||
ResultSet<AccountGroupIncludeByUuidAudit> byGroupInclude(AccountGroup.Id groupId,
|
||||
AccountGroup.UUID incGroupUUID) throws OrmException;
|
||||
}
|
||||
@@ -70,12 +70,6 @@ public interface ReviewDb extends Schema {
|
||||
@Relation(id = 13)
|
||||
AccountGroupMemberAuditAccess accountGroupMembersAudit();
|
||||
|
||||
@Relation(id = 14)
|
||||
AccountGroupIncludeAccess accountGroupIncludes();
|
||||
|
||||
@Relation(id = 15)
|
||||
AccountGroupIncludeAuditAccess accountGroupIncludesAudit();
|
||||
|
||||
@Relation(id = 17)
|
||||
AccountDiffPreferenceAccess accountDiffPreferences();
|
||||
|
||||
@@ -112,6 +106,12 @@ public interface ReviewDb extends Schema {
|
||||
@Relation(id = 28)
|
||||
SubmoduleSubscriptionAccess submoduleSubscriptions();
|
||||
|
||||
@Relation(id = 29)
|
||||
AccountGroupIncludeByUuidAccess accountGroupIncludesByUuid();
|
||||
|
||||
@Relation(id = 30)
|
||||
AccountGroupIncludeByUuidAuditAccess accountGroupIncludesByUuidAudit();
|
||||
|
||||
/** Create the next unique id for an {@link Account}. */
|
||||
@Sequence(startWith = 1000000)
|
||||
int nextAccountId() throws OrmException;
|
||||
|
||||
Reference in New Issue
Block a user