/**
*
*/
package org.goko.core.workspace.service;
import java.util.List;
import org.goko.core.common.exception.GkException;
import org.goko.core.workspace.io.IProjectLocation;
import org.goko.core.workspace.io.XmlProjectContainer;
/**
* @author PsyKo
* @date 9 d�c. 2015
*/
public interface IProjectSaveParticipant<T> {
boolean isDirty();
/**
* Returns the list of nodes that need to be saved
* @param context the save context
* @return the list of nodes that need to be saved
* @throws GkException GkException
*/
List<XmlProjectContainer> save(IProjectLocation output) throws GkException;
/**
* Tells this participant to rollback its changes because the save of th eproject failed
*/
void rollback();
/**
* Tells this participant that the saving process completed without error
*/
void saveComplete();
}