![JAR search and dependency download from the Maven repository](/logo.png)
com.arellomobile.mvp.MvpProcessor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of moxy Show documentation
Show all versions of moxy Show documentation
Arello-Mobile MVP library for Android
package com.arellomobile.mvp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.arellomobile.mvp.presenter.PresenterField;
import com.arellomobile.mvp.presenter.PresenterType;
/**
* Date: 18-Dec-15
* Time: 13:16
*
* @author Yuri Shmakov
* @author Alexander Blinov
*/
public class MvpProcessor {
public static final String PRESENTER_BINDER_SUFFIX = "$$PresentersBinder";
public static final String PRESENTER_BINDER_INNER_SUFFIX = "Binder";
public static final String VIEW_STATE_SUFFIX = "$$State";
public static final String VIEW_STATE_PROVIDER_SUFFIX = "$$ViewStateProvider";
/**
* 1) Generates tag for identification MvpPresenter
* 2) Checks if presenter with tag is already exist in {@link com.arellomobile.mvp.PresenterStore}, and returns it
* 3) If {@link com.arellomobile.mvp.PresenterStore} doesn't contain MvpPresenter with current tag, {@link PresenterField} will create it
*
* @param type of delegated
* @param target object that want injection
* @param presenterField info about presenter from {@link com.arellomobile.mvp.presenter.InjectPresenter}
* @param delegateTag unique tag generated by {@link MvpDelegate#generateTag()} @return MvpPresenter instance
*/
private MvpPresenter super Delegated> getMvpPresenter(Delegated target, PresenterField presenterField, String delegateTag) {
Class extends MvpPresenter>> presenterClass = presenterField.getPresenterClass();
PresenterStore presenterStore = MvpFacade.getInstance().getPresenterStore();
PresenterType type = presenterField.getPresenterType();
String tag;
if (type == PresenterType.LOCAL) {
tag = delegateTag + "$" + presenterField.getTag(target);
} else {
tag = presenterField.getTag(target);
}
//noinspection unchecked
MvpPresenter super Delegated> presenter = presenterStore.get(tag);
if (presenter != null) {
return presenter;
}
//noinspection unchecked
presenter = (MvpPresenter super Delegated>) presenterField.providePresenter(target);
if (presenter == null) {
return null;
}
presenter.setPresenterType(type);
presenter.setTag(tag);
presenter.setPresenterClass(presenterClass);
presenterStore.add(tag, presenter);
return presenter;
}
/**
* Gets presenters {@link java.util.List} annotated with {@link com.arellomobile.mvp.presenter.InjectPresenter} for view.
* See full info about getting presenter instance in {@link #getMvpPresenter}
*
* @param delegated class contains presenter
* @param delegateTag unique tag generated by {@link MvpDelegate#generateTag()}
* @param type of delegated
* @return presenters list for specifies presenters container
*/
List> getMvpPresenters(Delegated delegated, String delegateTag) {
if (!hasMoxyReflector()) {
return Collections.emptyList();
}
@SuppressWarnings("unchecked")
Class super Delegated> aClass = (Class) delegated.getClass();
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy