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:
Edwin Kempin
2016-07-01 11:03:57 +02:00
parent 7bb93e4601
commit 2e8e9dc8ce
6 changed files with 157 additions and 15 deletions

View File

@@ -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;
}
}
/**

View File

@@ -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;
}
}