/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * 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:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.runtime.common.memento;

import org.eclipse.osbp.runtime.common.validation.IStatus;

/**
 * A memento manager is responsible to load and save mementos.
 */
public interface IMementoManager {

	/** The Constant EVENT_TOPIC. */
	public static final String EVENT_TOPIC = "runtime/memento";

	/** The Constant PROP_PERSIST_POLICY. */
	public static final String PROP_PERSIST_POLICY = "persisting.policy";

	/**
	 * Loads the memento for the given memento id.
	 *
	 * @param userId
	 *            the user id
	 * @param mementoId
	 *            the memento id
	 * @return the object
	 */
	Object loadMemento(String userId, String mementoId);

	/**
	 * Saves the memento by the given mementoId.
	 *
	 * @param userId
	 *            the user id
	 * @param mementoId
	 *            the memento id
	 * @param memento
	 *            the memento
	 * @return status containing exceptions or IStatus.OK
	 */
	IStatus saveMemento(String userId, String mementoId, Object memento);
}
