/******************************************************************************* * Copyright (c) 2008-2015 Chair for Applied Software Engineering, * Technische Universitaet Muenchen. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Otto von Wesendonk - initial API and implementation ******************************************************************************/ package org.eclipse.emf.emfstore.internal.server.core.subinterfaces; import org.eclipse.emf.emfstore.internal.server.accesscontrol.AccessControl; import org.eclipse.emf.emfstore.internal.server.core.AbstractEmfstoreInterface; import org.eclipse.emf.emfstore.internal.server.core.AbstractSubEmfstoreInterface; import org.eclipse.emf.emfstore.internal.server.exceptions.FatalESException; import org.eclipse.emf.emfstore.internal.server.model.SessionId; import org.eclipse.emf.emfstore.internal.server.model.accesscontrol.ACOrgUnitId; import org.eclipse.emf.emfstore.internal.server.model.accesscontrol.ACUser; import org.eclipse.emf.emfstore.internal.server.model.impl.api.ESUserImpl; import org.eclipse.emf.emfstore.server.auth.ESMethod; import org.eclipse.emf.emfstore.server.auth.ESMethod.MethodId; import org.eclipse.emf.emfstore.server.exceptions.ESException; import org.eclipse.emf.emfstore.server.model.ESUser; /** * This subinterface implements all user related functionality. * * @author wesendonk */ public class UserSubInterfaceImpl extends AbstractSubEmfstoreInterface { /** * Default constructor. * * @param parentInterface parent interface * @throws FatalESException in case of failure */ public UserSubInterfaceImpl(AbstractEmfstoreInterface parentInterface) throws FatalESException { super(parentInterface); } /** * Resolves a given user ID to the an actual user instance. * * @param sessionId * the ID of the session that is used to resolve the user * @param id * the user ID * @return the user with the given ID * @throws ESException in case of failure */ @ESMethod(MethodId.RESOLVEUSER) public ACUser resolveUser(SessionId sessionId, ACOrgUnitId id) throws ESException { sanityCheckObjects(sessionId); synchronized (getMonitor()) { final AccessControl accessControl = getAccessControl(); accessControl.getAuthorizationService().checkServerAdminAccess(sessionId.toAPI()); final ESUser rawUser = accessControl.getSessions().getRawUser(sessionId.toAPI()); final ESUser resolvedUser; if (id == null) { resolvedUser = accessControl.getOrgUnitResolverServive().resolveUser( // TODO casts ESUserImpl.class.cast(rawUser).toInternalAPI().getId().toAPI()); } else { resolvedUser = accessControl.getOrgUnitResolverServive().resolveUser(id.toAPI()); } final ESUser user = accessControl.getOrgUnitResolverServive().copyAndResolveUser(resolvedUser); return (ACUser) ESUserImpl.class.cast(user).toInternalAPI(); } } }