/**
* Copyright (c) 2013-2016 Angelo ZERR.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern.server;
import tern.ITernFileSynchronizer;
import tern.TernException;
import tern.server.protocol.IJSONObjectHelper;
import tern.server.protocol.ITernResultsCollector;
import tern.server.protocol.TernDoc;
import tern.server.protocol.html.ScriptTagRegion;
import tern.server.protocol.push.IMessageHandler;
/**
* Tern server API.
*
*/
public interface ITernServer {
/**
* Register a file with the server. Note that files can also be included in
* requests.
*
* @param name
* the file name.
* @param text
* the content file.
*/
void addFile(String name, String text);
/**
* Register a file with the server. Note that files can also be included in
* requests.
*
* @param name
* the file name.
* @param text
* the content file.
*/
void addFile(String name, String text, ScriptTagRegion[] tags);
void request(TernDoc doc, IResponseHandler handler);
void request(TernDoc doc, ITernResultsCollector collector) throws TernException;
/**
* Add server listener.
*
* @param listener
*/
void addServerListener(ITernServerListener listener);
/**
* Remove server listener.
*
* @param listener
*/
void removeServerListener(ITernServerListener listener);
/**
* Returns the tern file manager and null otherwise.
*
* @return the tern file manager and null otherwise.
*/
ITernFileSynchronizer getFileSynchronizer();
boolean isDataAsJsonString();
void setDataAsJsonString(boolean dataAsJsonString);
boolean isDisposed();
void dispose();
/**
* Set true if tern plugins can be loaded from the project root and false
* otherwise.
*
* @see https://github.com/marijnh/tern/commit/154
* b0587a64eea193d124005e03d80065ac310e2
*/
void setLoadingLocalPlugins(boolean loadingLocalPlugins);
/**
* Returns true if tern plugins can be loaded from the project root and
* false otherwise.
*
* @return true if tern plugins can be loaded from the project root and
* false otherwise.
* @see https://github.com/marijnh/tern/commit/154
* b0587a64eea193d124005e03d80065ac310e2
*/
boolean isLoadingLocalPlugins();
ITernServerRequestProcessor getRequestProcessor();
void setRequestProcessor(ITernServerRequestProcessor asyncReqProcessor);
IJSONObjectHelper getJSONObjectHelper();
/**
* Add push message listener.
*
* @type event type
* @param listener
*/
void on(String type, IMessageHandler listener);
/**
* Remove server listener.
*
* @type event type
* @param listener
*/
void off(String type, IMessageHandler listener);
}