These have identical public fields; the only difference is that AccountInfo.Loader was using the transient _id field store the ID before filling in values. We can instead reuse the Integer _accountId field for this purpose. This may incur an additional boxing or so per account per request, but that cost should be negligible given how many allocations we do per request already. AccountInfoMapper is no longer required, so remove that entirely. We are now enforcing that AccountInfos passed to the loader have an _accountId. Since by default the old account.AccountInfo worked without an _accountId, add this as a separate FillOption and clear it if that option is not set. To verify this, check the owner fields in ChangeIT#get. Change-Id: Ied01750485cc728e91e585a31f3db8863bae7e40
40 lines
1.3 KiB
Java
40 lines
1.3 KiB
Java
// Copyright (C) 2013 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.server.account;
|
|
|
|
import com.google.gerrit.extensions.common.AccountInfo;
|
|
import com.google.gerrit.extensions.restapi.RestReadView;
|
|
import com.google.gwtorm.server.OrmException;
|
|
import com.google.inject.Inject;
|
|
import com.google.inject.Singleton;
|
|
|
|
@Singleton
|
|
public class GetAccount implements RestReadView<AccountResource> {
|
|
private final AccountLoader.Factory infoFactory;
|
|
|
|
@Inject
|
|
GetAccount(AccountLoader.Factory infoFactory) {
|
|
this.infoFactory = infoFactory;
|
|
}
|
|
|
|
@Override
|
|
public AccountInfo apply(AccountResource rsrc) throws OrmException {
|
|
AccountLoader loader = infoFactory.create(true);
|
|
AccountInfo info = loader.get(rsrc.getUser().getAccountId());
|
|
loader.fill();
|
|
return info;
|
|
}
|
|
}
|