/******************************************************************************* * Copyright (c) 2012-2013 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: * Otto von Wesendonk, Edgar Mueller - initial API and implementation * Edgar Mueller - API annotations ******************************************************************************/ package org.eclipse.emf.emfstore.client; import org.eclipse.emf.emfstore.client.exceptions.ESServerStartFailedException; import org.eclipse.emf.emfstore.common.model.ESFactory; /** * Factory for creating {@link ESServer} instances. * * @author wesendon * @author emueller * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface ESServerFactory extends ESFactory { /** * Creates a server without a local name. * The created server is not automatically added to the workspace, i.e. * most users will call {@link org.eclipse.emf.emfstore.client.ESWorkspace#addServer(ESServer)} in order to * to avoid {@link org.eclipse.emf.ecore.xmi.DanglingHREFException}s upon saving. * * @param url * the URL of the server * @param port * the port of the server where EMFStore is listing on * @param certificate * the certificate alias to be used * * @return an {@link ESServer} instance representing the remote server * * @see {@link org.eclipse.emf.emfstore.client.ESWorkspace#addServer(ESServer)} */ ESServer createServer(String url, int port, String certificate); /** * Creates a server with a local name. * The created server is not automatically added to the workspace, i.e. * most users will call {@link org.eclipse.emf.emfstore.client.ESWorkspace#addServer(ESServer)} in order to * to avoid {@link org.eclipse.emf.ecore.xmi.DanglingHREFException}s upon saving. * * @param name * the local name of the server * @param url * the URL of the server * @param port * the port of the server where EMFStore is listing on * @param certificate * the certificate alias to be used * * @return an {@link ESServer} instance representing the remote server * * @see {@link org.eclipse.emf.emfstore.client.ESWorkspace#addServer(ESServer)} */ ESServer createServer(String name, String url, int port, String certificate); /** * Creates a server with a local name and launches a server process locally. Blocks until server is fully running. * Only one local server can be started at any point in time. Calling this method with a serve already running will * not launch another server, but just return a new ESServer. * The created server is not automatically added to the workspace, i.e. * most users will call {@link org.eclipse.emf.emfstore.client.ESWorkspace#addServer(ESServer)} in order to * to avoid {@link org.eclipse.emf.ecore.xmi.DanglingHREFException}s upon saving. * * @return an {@link ESServer} instance representing the local server on the client side. * @throws ESServerStartFailedException if starting the server fails */ ESServer createAndStartLocalServer() throws ESServerStartFailedException; /** * Stop the local server if it has been started. Blocks until server has stopped fully. */ void stopLocalServer(); }