| /******************************************************************************* |
| * Copyright (c) 2014 EclipseSource Muenchen GmbH and others. |
| * |
| * 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: |
| * Edgar Mueller - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.emf.emfstore.client.test.common.util; |
| |
| 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.ESVoidCallable; |
| import org.eclipse.emf.emfstore.client.util.RunESCommand; |
| import org.eclipse.emf.emfstore.internal.client.model.ESWorkspaceProviderImpl; |
| import org.eclipse.emf.emfstore.internal.client.model.ModelFactory; |
| import org.eclipse.emf.emfstore.internal.client.model.Usersession; |
| import org.eclipse.emf.emfstore.internal.client.model.Workspace; |
| import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.KeyStoreManager; |
| import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESServerImpl; |
| import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESWorkspaceImpl; |
| import org.eclipse.emf.emfstore.server.exceptions.ESException; |
| |
| public class TestSessionProvider extends ESAbstractSessionProvider { |
| |
| private Usersession session; |
| |
| public TestSessionProvider() { |
| } |
| |
| private void initSession(ESServer server) { |
| |
| if (server == null) { |
| server = ESServer.FACTORY.createServer("localhost", 8080, KeyStoreManager.DEFAULT_CERTIFICATE); //$NON-NLS-1$ |
| } |
| |
| final ESWorkspaceImpl workspace = ESWorkspaceProviderImpl.getInstance().getWorkspace(); |
| final Workspace internalWorkspace = workspace.toInternalAPI(); |
| // TODO: contains check for server infos |
| if (!internalWorkspace.getServerInfos().contains(server)) { |
| workspace.addServer(server); |
| } |
| |
| // ServerInfo serverInfo = SetupHelper.getServerInfo(); |
| session = ModelFactory.eINSTANCE.createUsersession(); |
| // session.setServerInfo(serverInfo); |
| session.setUsername("super"); //$NON-NLS-1$ |
| session.setPassword("super"); //$NON-NLS-1$ |
| session.setSavePassword(true); |
| session.setServerInfo(((ESServerImpl) server).toInternalAPI()); |
| RunESCommand.run(new ESVoidCallable() { |
| @Override |
| public void run() { |
| internalWorkspace.getUsersessions().add(session); |
| } |
| }); |
| internalWorkspace.save(); |
| } |
| |
| @Override |
| public ESUsersession provideUsersession(ESServer serverInfo) throws ESException { |
| final Workspace internalWorkspace = ESWorkspaceProviderImpl.getInstance().getWorkspace().toInternalAPI(); |
| if (session != null && internalWorkspace.getUsersessions().contains(session)) { |
| return session.toAPI(); |
| } |
| |
| if (serverInfo != null && serverInfo.getLastUsersession() != null) { |
| return serverInfo.getLastUsersession(); |
| |
| } |
| |
| if (session == null || !internalWorkspace.getUsersessions().contains(session)) { |
| initSession(serverInfo); |
| } |
| |
| return session.toAPI(); |
| } |
| |
| @Override |
| public ESUsersession login(ESUsersession usersession) throws ESException { |
| session.logIn(); |
| return session.toAPI(); |
| } |
| |
| public void clearSession() { |
| final Workspace internalWorkspace = ESWorkspaceProviderImpl.getInstance().getWorkspace().toInternalAPI(); |
| if (session != null && internalWorkspace.getUsersessions().contains(session)) { |
| internalWorkspace.getUsersessions().remove(session); |
| session = null; |
| } |
| } |
| } |