Account query: Add option to control if details should be returned
By default account queries do not return details, only for account suggestions details are always returned since the details are needed to display the suggestions. Change-Id: I49a9aa115b227ff80017e037e05eaeb051669c2e Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -14,10 +14,13 @@
|
||||
|
||||
package com.google.gerrit.extensions.api.accounts;
|
||||
|
||||
import com.google.gerrit.extensions.client.ListAccountsOption;
|
||||
import com.google.gerrit.extensions.common.AccountInfo;
|
||||
import com.google.gerrit.extensions.restapi.NotImplementedException;
|
||||
import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
public interface Accounts {
|
||||
@@ -141,6 +144,8 @@ public interface Accounts {
|
||||
private String query;
|
||||
private int limit;
|
||||
private int start;
|
||||
private EnumSet<ListAccountsOption> options =
|
||||
EnumSet.noneOf(ListAccountsOption.class);
|
||||
|
||||
/**
|
||||
* Executes query and returns a list of accounts.
|
||||
@@ -175,6 +180,21 @@ public interface Accounts {
|
||||
return this;
|
||||
}
|
||||
|
||||
public QueryRequest withOption(ListAccountsOption options) {
|
||||
this.options.add(options);
|
||||
return this;
|
||||
}
|
||||
|
||||
public QueryRequest withOptions(ListAccountsOption... options) {
|
||||
this.options.addAll(Arrays.asList(options));
|
||||
return this;
|
||||
}
|
||||
|
||||
public QueryRequest withOptions(EnumSet<ListAccountsOption> options) {
|
||||
this.options = options;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
@@ -186,6 +206,10 @@ public interface Accounts {
|
||||
public int getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public EnumSet<ListAccountsOption> getOptions() {
|
||||
return options;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -0,0 +1,59 @@
|
||||
// Copyright (C) 2016 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.google.gerrit.extensions.client;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
|
||||
/** Output options available for retrieval of account details. */
|
||||
public enum ListAccountsOption {
|
||||
/** Return detailed account properties. */
|
||||
DETAILS(0);
|
||||
|
||||
private final int value;
|
||||
|
||||
ListAccountsOption(int v) {
|
||||
this.value = v;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static EnumSet<ListAccountsOption> fromBits(int v) {
|
||||
EnumSet<ListAccountsOption> r = EnumSet.noneOf(ListAccountsOption.class);
|
||||
for (ListAccountsOption o : ListAccountsOption.values()) {
|
||||
if ((v & (1 << o.value)) != 0) {
|
||||
r.add(o);
|
||||
v &= ~(1 << o.value);
|
||||
}
|
||||
if (v == 0) {
|
||||
return r;
|
||||
}
|
||||
}
|
||||
if (v != 0) {
|
||||
throw new IllegalArgumentException("unknown " + Integer.toHexString(v));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
public static int toBits(Set<ListAccountsOption> set) {
|
||||
int r = 0;
|
||||
for (ListAccountsOption o : set) {
|
||||
r |= 1 << o.value;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user