package org.springframework.social.evernote.api;

import com.evernote.clients.*;
import com.evernote.edam.type.LinkedNotebook;
import org.springframework.social.ApiBinding;

/**
 * Interface specifying basic set of operations to evernote.
 * <p/>
 * This interface provides spring-social-evernote's core API for features, such as:
 * <ul>
 * <li>Interface based programming model</li>
 * <li>Unchecked exception</li>
 * <li>null-safe thrift collections</li>
 * </ul>
 * <p/>
 * Implemented by {@link org.springframework.social.evernote.api.Impl.EvernoteTemplate}.
 *
 * @author Tadaya Tsuyukubo
 */
public interface Evernote extends ApiBinding {

	/**
	 * API for performing operations on {@link BusinessNoteStoreClient}.
	 *
	 * @return operations for {@link BusinessNoteStoreClient}.
	 * @throws EvernoteException converted unchecked exception.
	 */
	BusinessNoteStoreOperations businessNoteStoreOperations() throws EvernoteException;

	/**
	 * API for performing operations on {@link LinkedNoteStoreOperations}.
	 *
	 * @param linkedNotebook
	 * @return operations for {@link LinkedNoteStoreOperations}.
	 * @throws EvernoteException converted unchecked exception.
	 */
	LinkedNoteStoreOperations linkedNoteStoreOperations(LinkedNotebook linkedNotebook) throws EvernoteException;

	/**
	 * API for performing operations on {@link NoteStoreOperations}.
	 *
	 * @return operations for {@link NoteStoreOperations}.
	 * @throws EvernoteException converted unchecked exception.
	 */
	NoteStoreOperations noteStoreOperations() throws EvernoteException;

	/**
	 * API for performing operations on {@link UserStoreOperations}.
	 *
	 * @return operations for {@link UserStoreOperations}.
	 * @throws EvernoteException converted unchecked exception.
	 */
	UserStoreOperations userStoreOperations() throws EvernoteException;


	/**
	 * Returns underlying {@link ClientFactory} instance.
	 *
	 * @return {@link ClientFactory} instance.
	 */
	ClientFactory clientFactory();

	/**
	 * Retrieve {@link BusinessNoteStoreClient} instance from underlying {@link ClientFactory}.
	 * <p/>
	 * When checked exception has thrown while creating {@link BusinessNoteStoreClient}, it will be converted
	 * to {@link EvernoteException} which is an unchecked exception.
	 *
	 * @return {@link BusinessNoteStoreClient} instance.
	 * @throws EvernoteException encapsulating thrown checked exception.
	 */
	BusinessNoteStoreClient businessNoteStoreClient() throws EvernoteException;

	/**
	 * Retrieve {@link LinkedNoteStoreClient} instance from underlying {@link ClientFactory}.
	 * <p/>
	 * When checked exception has thrown while creating {@link LinkedNoteStoreClient}, it will be converted
	 * to {@link EvernoteException} which is an unchecked exception.
	 *
	 * @return {@link LinkedNoteStoreClient} instance.
	 * @throws EvernoteException encapsulating thrown checked exception.
	 */
	LinkedNoteStoreClient linkedNoteStoreClient(LinkedNotebook linkedNotebook) throws EvernoteException;

	/**
	 * Retrieve {@link NoteStoreClient} instance from underlying {@link ClientFactory}.
	 * <p/>
	 * When checked exception has thrown while creating {@link NoteStoreClient}, it will be converted
	 * to {@link EvernoteException} which is an unchecked exception.
	 *
	 * @return {@link NoteStoreClient} instance.
	 * @throws EvernoteException encapsulating thrown checked exception.
	 */
	NoteStoreClient noteStoreClient() throws EvernoteException;

	/**
	 * Retrieve {@link UserStoreClient} instance from underlying {@link ClientFactory}.
	 * <p/>
	 * When checked exception has thrown while creating {@link UserStoreClient}, it will be converted
	 * to {@link EvernoteException} which is an unchecked exception.
	 *
	 * @return {@link UserStoreClient} instance.
	 * @throws EvernoteException encapsulating thrown checked exception.
	 */
	UserStoreClient userStoreClient() throws EvernoteException;

}

@@ -991,34 +991,30 @@
 kedNoteStore
-Operations
+Client
 %7D.%0A%09 *%0A%09 * @
@@ -1079,34 +1079,30 @@
 kedNoteStore
-Operations
+Client
 %7D.%0A%09 * @thro
@@ -1323,34 +1323,30 @@
 nk NoteStore
-Operations
+Client
 %7D.%0A%09 *%0A%09 * @
@@ -1379,34 +1379,30 @@
 nk NoteStore
-Operations
+Client
 %7D.%0A%09 * @thro
@@ -1582,34 +1582,30 @@
 nk UserStore
-Operations
+Client
 %7D.%0A%09 *%0A%09 * @
@@ -1642,26 +1642,22 @@
 serStore
-Operations
+Client
 %7D.%0A%09 * @

fix wrong link in javadoc