/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* 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:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.api.editor.document;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.ImplementedBy;
import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.commons.annotation.Nullable;
import org.eclipse.che.ide.api.editor.EditorInput;
import org.eclipse.che.ide.api.resources.VirtualFile;
import javax.validation.constraints.NotNull;
/**
* Interface for file retrieval and storage operations.
*/
@ImplementedBy(DocumentStorageImpl.class)
public interface DocumentStorage {
/**
* Retrieves the file content.
*
* @param file
* the file
* @param callback
* operation to do when the content is ready
*/
void getDocument(@NotNull VirtualFile file,
@NotNull final DocumentCallback callback);
/**
* Retrieves the file content.
* @param file
* the file
* @return the promise which should return content
*/
@NotNull
Promise<String> getDocument(@NotNull VirtualFile file);
/**
* Saves the file content.
*
* @param editorInput
* the editor input
* @param document
* the document
* @param overwrite
* @param callback
* operation to do when the content is ready
*/
void saveDocument(@Nullable final EditorInput editorInput,
@NotNull Document document,
boolean overwrite,
@NotNull final AsyncCallback<EditorInput> callback);
/**
* Action taken when the document is closed.
*
* @param document
* the document
*/
void documentClosed(@NotNull Document document);
/**
* Action taken when retrieve action is successful.
*/
interface DocumentCallback {
/**
* Action taken when retrieve action is successful.
*
* @param content
* the content that was received
*/
void onDocumentReceived(String content);
/**
* Action taken when retrieve action fails.
*
* @param caught
* the exception
*/
void onDocumentLoadFailure(Throwable caught);
}
}