Skip to content

Commit

Permalink
Merge branch 'release/1.4.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
senneco committed Dec 29, 2016
2 parents f1d98ee + 18d8b61 commit a7ffd49
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 41 deletions.
14 changes: 7 additions & 7 deletions README.md
Expand Up @@ -76,36 +76,36 @@ Base modules integration:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy:1.4.1'
provided 'com.arello-mobile:moxy-compiler:1.4.1'
compile 'com.arello-mobile:moxy:1.4.2'
provided 'com.arello-mobile:moxy-compiler:1.4.2'
}
```
If you want to see generated code, use `apt` instead of `provided` dependency type:
```groovy
dependencies {
...
apt 'com.arello-mobile:moxy-compiler:1.4.1'
apt 'com.arello-mobile:moxy-compiler:1.4.2'
}
```
Note: if you use gradle plugin verion 2.2.2 and above, so you can use `annotationProcessor` instead of `apt`:
```groovy
dependencies {
...
annotationProcessor 'com.arello-mobile:moxy-compiler:1.4.1'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.4.2'
}
```
For additional base view classes `MvpActivity` and `MvpFragment` add this:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy-android:1.4.1'
compile 'com.arello-mobile:moxy-android:1.4.2'
}
```
If you are planing to use AppCompat, then you can use `MvpAppCompatActivity` and `MvpAppCompatFragment`. Then add this:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy-app-compat:1.4.1'
compile 'com.arello-mobile:moxy-app-compat:1.4.2'
compile 'com.android.support:appcompat-v7:$support_version'
}
```
Expand All @@ -114,7 +114,7 @@ If you are using kotlin, use `kapt` instead of `provided`/`apt` dependency type
```groovy
dependencies {
...
kapt 'com.arello-mobile:moxy-compiler:1.4.1'
kapt 'com.arello-mobile:moxy-compiler:1.4.2'
}
kapt {
generateStubs = true
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Expand Up @@ -19,8 +19,8 @@ allprojects {
}

ext {
targetVersionCode = 34
targetVersionName = "1.4.1"
targetVersionCode = 35
targetVersionName = "1.4.2"
}

task clean(type: Delete) {
Expand Down
Expand Up @@ -107,7 +107,7 @@ public boolean generate(VariableElement variableElement, List<ClassGeneratingPar
bindTagProvidersToFields(fields, tagProviders);

for (Field field : fields) {
builder = generatePresenterBinderClass(builder, field);
builder = generatePresenterBinderClass(builder, parentClassName, field);
}

builder = generateGetPresentersMethod(builder, fields, parentClassName);
Expand Down Expand Up @@ -343,23 +343,23 @@ private static String generateGetPresentersMethod(final String builder, final Li
return builder + s;
}

private static String generatePresenterBinderClass(final String builder, final Field field) {
private static String generatePresenterBinderClass(final String builder, String targetClass, final Field field) {
TypeElement clazz = (TypeElement) ((DeclaredType) field.getClazz()).asElement();
String s = "\tpublic class " + field.getGeneratedClassName() + " extends PresenterField {\n" +
"\t\tpublic " + field.getGeneratedClassName() + "() {\n" +
"\t\t\tsuper(" + field.getTag() + ", PresenterType." + field.getType().name() + ", " + field.getPresenterId() + ", " + clazz + ".class);\n" +
"\t\t}\n" +
"\n" +
"\t\t@Override\n" +
"\t\tpublic void setValue(MvpPresenter presenter) {\n" +
"\t\t\tmTarget." + field.getName() + " = (" + clazz.getQualifiedName() + ") presenter;\n" +
"\t\tpublic void bind(Object target, MvpPresenter presenter) {\n" +
"\t\t\t((" + targetClass + ") target)." + field.getName() + " = (" + clazz.getQualifiedName() + ") presenter;\n" +
"\t\t}\n";

s += "\n" +
"\t\t@Override\n" +
"\t\tpublic MvpPresenter<?> providePresenter() {\n";
"\t\tpublic MvpPresenter<?> providePresenter(Object delegated) {\n";
if (field.getPresenterProviderMethodName() != null) {
s+= "\t\t\treturn mTarget." + field.getPresenterProviderMethodName() + "();\n";
s+= "\t\t\treturn ((" + targetClass + ") delegated)." + field.getPresenterProviderMethodName() + "();\n";
} else {
boolean hasEmptyConstructor = false;
List<? extends Element> enclosedElements = clazz.getEnclosedElements();
Expand All @@ -383,8 +383,8 @@ private static String generatePresenterBinderClass(final String builder, final F
if (field.getPresenterTagProviderMethodName() != null) {
s += "\n" +
"\t\t@Override\n" +
"\t\tpublic String getTag() {\n" +
"\t\t\treturn String.valueOf(mTarget." + field.getPresenterTagProviderMethodName() + "());\n" +
"\t\tpublic String getTag(Object delegated) {\n" +
"\t\t\treturn String.valueOf(((" + targetClass + ") delegated)." + field.getPresenterTagProviderMethodName() + "());\n" +
"\t\t}\n";
}

Expand Down
17 changes: 8 additions & 9 deletions moxy/src/main/java/com/arellomobile/mvp/MvpProcessor.java
Expand Up @@ -27,19 +27,19 @@ public class MvpProcessor {
* <p>
* 3)If {@link com.arellomobile.mvp.PresenterStore} doesn't contain MvpPresenter with current tag, {@link PresenterField} will create it
*
* @param presenterField info about presenter from {@link com.arellomobile.mvp.presenter.InjectPresenter}
* @param delegateTag unique tag generated by {@link MvpDelegate#generateTag()}
* @param <Delegated> type of delegated
* @return MvpPresenter instance
* @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 <Delegated> MvpPresenter<? super Delegated> getMvpPresenter(PresenterField<?, ? super Delegated> presenterField, String delegateTag) {
private <Delegated> MvpPresenter<? super Delegated> getMvpPresenter(Delegated target, PresenterField<?, ? super Delegated> presenterField, String delegateTag) {
Class<? extends MvpPresenter<?>> presenterClass = presenterField.getPresenterClass();
PresenterStore presenterStore = MvpFacade.getInstance().getPresenterStore();

PresenterType type = presenterField.getPresenterType();
//noinspection unchecked
String tag = type == PresenterType.LOCAL ? delegateTag + "$" : "";
tag += presenterField.getTag();
tag += presenterField.getTag(target);

//noinspection unchecked
MvpPresenter<? super Delegated> presenter = presenterStore.get(type, tag, presenterClass);
Expand All @@ -48,7 +48,7 @@ private <Delegated> MvpPresenter<? super Delegated> getMvpPresenter(PresenterFie
}

//noinspection unchecked
presenter = (MvpPresenter<? super Delegated>) presenterField.providePresenter();
presenter = (MvpPresenter<? super Delegated>) presenterField.providePresenter(target);

if (presenter == null) {
return null;
Expand Down Expand Up @@ -87,16 +87,15 @@ <Delegated> List<MvpPresenter<? super Delegated>> getMvpPresenters(Delegated del
for (Object presenterBinderObject : presenterBinders) {
//noinspection unchecked
PresenterBinder<? super Delegated> presenterBinder = (PresenterBinder<? super Delegated>) presenterBinderObject;
presenterBinder.setTarget(delegated);
List<? extends PresenterField<?, ? super Delegated>> presenterFields = presenterBinder.getPresenterFields();

for (PresenterField<?, ? super Delegated> presenterField : presenterFields) {
MvpPresenter<? super Delegated> presenter = getMvpPresenter(presenterField, delegateTag);
MvpPresenter<? super Delegated> presenter = getMvpPresenter(delegated, presenterField, delegateTag);

if (presenter != null) {
presentersCounter.injectPresenter(presenter, delegateTag);
presenters.add(presenter);
presenterField.setValue(presenter);
presenterField.bind(delegated, presenter);
}
}
}
Expand Down
6 changes: 0 additions & 6 deletions moxy/src/main/java/com/arellomobile/mvp/PresenterBinder.java
Expand Up @@ -11,11 +11,5 @@
* @author Alexander Blinov
*/
public abstract class PresenterBinder<PresentersContainer> {
protected PresentersContainer mTarget;

public void setTarget(PresentersContainer presenterAggregator) {
mTarget = presenterAggregator;
}

public abstract List<PresenterField<?, ? super PresentersContainer>> getPresenterFields();
}
Expand Up @@ -22,9 +22,9 @@ protected PresenterField(String tag, PresenterType presenterType, String present
this.presenterClass = presenterClass;
}

public abstract void setValue(MvpPresenter presenter);
public abstract void bind(Object target, MvpPresenter presenter);

public String getTag() {
public String getTag(Object delegated) {
return tag != null ? tag : getClass().getSimpleName();
}

Expand All @@ -40,5 +40,5 @@ public Class<? extends MvpPresenter<?>> getPresenterClass() {
return presenterClass;
}

public abstract MvpPresenter<?> providePresenter();
public abstract MvpPresenter<?> providePresenter(Object delegated);
}
6 changes: 3 additions & 3 deletions sample-github/build.gradle
Expand Up @@ -68,7 +68,7 @@ dependencies {
testCompile "org.hamcrest:hamcrest-all:1.3"
testCompile "org.robolectric:robolectric:3.1-rc1"

compile 'com.arello-mobile:moxy:1.4.1'
compile 'com.arello-mobile:moxy-app-compat:1.4.1'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.4.1'
compile 'com.arello-mobile:moxy:1.4.2'
compile 'com.arello-mobile:moxy-app-compat:1.4.2'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.4.2'
}
6 changes: 3 additions & 3 deletions sample-kotlin/build.gradle
Expand Up @@ -40,9 +40,9 @@ android {
dependencies {
compile 'com.android.support:appcompat-v7:25.0.0'

compile 'com.arello-mobile:moxy:1.4.1'
compile 'com.arello-mobile:moxy-app-compat:1.4.1'
kapt 'com.arello-mobile:moxy-compiler:1.4.1'
compile 'com.arello-mobile:moxy:1.4.2'
compile 'com.arello-mobile:moxy-app-compat:1.4.2'
kapt 'com.arello-mobile:moxy-compiler:1.4.2'

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

0 comments on commit a7ffd49

Please sign in to comment.