package org.ovirt.engine.core.bll; import java.util.Collection; import java.util.Map; import javax.inject.Inject; import org.ovirt.engine.api.extensions.ExtMap; import org.ovirt.engine.core.aaa.SsoOAuthServiceUtils; import org.ovirt.engine.core.bll.aaa.DirectoryUtils; import org.ovirt.engine.core.bll.context.EngineContext; import org.ovirt.engine.core.common.queries.GetDirectoryUserByPrincipalParameters; public class GetDirectoryUserByPrincipalQuery<P extends GetDirectoryUserByPrincipalParameters> extends QueriesCommandBase<P> { @Inject private DirectoryUtils directoryUtils; public GetDirectoryUserByPrincipalQuery(P parameters, EngineContext engineContext) { super(parameters, engineContext); } public GetDirectoryUserByPrincipalQuery(P parameters) { this(parameters, null); } @Override protected void executeQueryCommand() { Map<String, Object> response = SsoOAuthServiceUtils.fetchPrincipalRecord( getSessionDataContainer().getSsoAccessToken(getParameters().getSessionId()), getParameters().getAuthz(), getParameters().getPrincnipal(), false, false ); ExtMap principalRecord = null; if (response.containsKey("result")) { Collection<ExtMap> records = (Collection<ExtMap>) response.get("result"); if (!records.isEmpty()) { principalRecord = records.iterator().next(); } } getQueryReturnValue().setReturnValue( directoryUtils.mapPrincipalRecordToDirectoryUser( getParameters().getAuthz(), principalRecord ) ); } }