// Path: app/src/main/java/com/tonilopezmr/sample/domain/repository/SubjectRepository.java
// public interface SubjectRepository {
// 
//     interface SubjectListCallback {
//         void onSubjectListLoader(Collection<Subject> subjects);
//         void onError(SubjectException subjectException);
//     }
// 
//     interface SubjectUseCase {
//         void onMissionAccomplished(Subject subject);
//         void onError(SubjectException subjectException);
//     }
// 
//     void getSubjectsCollection(SubjectListCallback callback) throws SubjectException;
// 
//     void createSubject(Subject subject, SubjectUseCase callback) throws SubjectException;
//     void deleteSubject(Subject subject, SubjectUseCase callback) throws  SubjectException;
// }
// 
// Path: app/src/main/java/com/tonilopezmr/sample/executor/Executor.java
// public interface Executor {
//     void run(final Interactor interactor);
// }
// 
// Path: app/src/main/java/com/tonilopezmr/sample/executor/MainThread.java
// public interface MainThread {
//     void post(final Runnable runnable);
// }


import com.tonilopezmr.sample.domain.repository.SubjectRepository;
import com.tonilopezmr.sample.executor.Executor;
import com.tonilopezmr.sample.executor.MainThread;
package com.tonilopezmr.sample.domain.interactor;


/**
 * @author toni.
 */
public abstract class AbstractSubjectUseCase implements SubjectUseCase {

    protected Executor executor;
// Path: app/src/main/java/com/tonilopezmr/sample/domain/repository/SubjectRepository.java
// public interface SubjectRepository {
// 
//     interface SubjectListCallback {
//         void onSubjectListLoader(Collection<Subject> subjects);
//         void onError(SubjectException subjectException);
//     }
// 
//     interface SubjectUseCase {
//         void onMissionAccomplished(Subject subject);
//         void onError(SubjectException subjectException);
//     }
// 
//     void getSubjectsCollection(SubjectListCallback callback) throws SubjectException;
// 
//     void createSubject(Subject subject, SubjectUseCase callback) throws SubjectException;
//     void deleteSubject(Subject subject, SubjectUseCase callback) throws  SubjectException;
// }
// 
// Path: app/src/main/java/com/tonilopezmr/sample/executor/Executor.java
// public interface Executor {
//     void run(final Interactor interactor);
// }
// 
// Path: app/src/main/java/com/tonilopezmr/sample/executor/MainThread.java
// public interface MainThread {
//     void post(final Runnable runnable);
// }


// Path: app/src/main/java/com/tonilopezmr/sample/domain/interactor/AbstractSubjectUseCase.java
import com.tonilopezmr.sample.domain.repository.SubjectRepository;
import com.tonilopezmr.sample.executor.Executor;
import com.tonilopezmr.sample.executor.MainThread;

package com.tonilopezmr.sample.domain.interactor;


/**
 * @author toni.
 */
public abstract class AbstractSubjectUseCase implements SubjectUseCase {

    protected Executor executor;
    protected MainThread mainThread;