/******************************************************************************* * Copyright (c) 2008-2011 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: * emueller ******************************************************************************/ package org.eclipse.emf.emfstore.client.test.common; import java.util.concurrent.Callable; import org.eclipse.emf.emfstore.client.ESServer; import org.eclipse.emf.emfstore.client.ESUsersession; import org.eclipse.emf.emfstore.client.sessionprovider.ESAbstractSessionProvider; import org.eclipse.emf.emfstore.client.util.RunESCommand; import org.eclipse.emf.emfstore.internal.client.model.Usersession; import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.KeyStoreManager; import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESUsersessionImpl; import org.eclipse.emf.emfstore.server.exceptions.ESException; /** * A session provider implementation meant to be used by any tests. * * @author emueller */ public final class TestSessionProvider2 extends ESAbstractSessionProvider { private static Usersession usersession; public static final TestSessionProvider2 INSTANCE = new TestSessionProvider2(); /** * Returns the singleton instance. * * @return the singleton instance */ public static TestSessionProvider2 getInstance() { return INSTANCE; } /** * Returns the default {@link Usersession}. * * @return the default user session * @throws ESException if anything else fails */ public Usersession getDefaultUsersession() throws ESException { return RunESCommand.WithException.runWithResult(ESException.class, new Callable<Usersession>() { public Usersession call() throws Exception { usersession.logIn(); return usersession; } }); } public TestSessionProvider2() { ESUsersessionImpl login; final ESServer server = ESServer.FACTORY.createServer("localhost", 8080, KeyStoreManager.DEFAULT_CERTIFICATE); //$NON-NLS-1$ try { login = (ESUsersessionImpl) server.login("super", "super"); //$NON-NLS-1$ //$NON-NLS-2$ usersession = login.toInternalAPI(); } catch (final ESException e) { throw new RuntimeException(e); } } @Override public ESUsersession provideUsersession(ESServer serverInfo) throws ESException { if (!usersession.isLoggedIn()) { usersession.logIn(); } return usersession.toAPI(); } @Override public ESUsersession login(ESUsersession usersession) throws ESException { usersession.getServer().login(usersession.getUsername(), usersession.getPassword()); return usersession; } }