Skip to content

Commit

Permalink
Merge branch 'release/1.5.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
senneco committed Apr 13, 2017
2 parents f7b0241 + 379f581 commit 147fce0
Show file tree
Hide file tree
Showing 16 changed files with 214 additions and 165 deletions.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,22 @@ Base modules integration:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy:1.4.6'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.4.6'
compile 'com.arello-mobile:moxy:1.5.0'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.5.0'
}
```
For additional base view classes `MvpActivity` and `MvpFragment` add this:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy-android:1.4.6'
compile 'com.arello-mobile:moxy-android:1.5.0'
}
```
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.6'
compile 'com.arello-mobile:moxy-app-compat:1.5.0'
compile 'com.android.support:appcompat-v7:$support_version'
}
```
Expand All @@ -100,7 +100,7 @@ If you are using kotlin, use `kapt` instead of `provided`/`apt` dependency type
```groovy
dependencies {
...
kapt 'com.arello-mobile:moxy-compiler:1.4.6'
kapt 'com.arello-mobile:moxy-compiler:1.5.0'
}
kapt {
generateStubs = true
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ allprojects {
}

ext {
targetVersionCode = 39
targetVersionName = "1.4.6"
targetVersionCode = 40
targetVersionName = "1.5.0"
}

task clean(type: Delete) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.arellomobile.mvp.compiler;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -73,14 +75,24 @@ public static String generate(List<String> presenterClassNames, Set<TypeElement>
"\tstatic {\n" +
"\t\tsViewStateProviders = new HashMap<>();\n";

Collections.sort(presenterClassNames);

for (String presenterClassName : presenterClassNames) {
builder += "\t\tsViewStateProviders.put(" + presenterClassName + ".class, new " + presenterClassName + MvpProcessor.VIEW_STATE_PROVIDER_SUFFIX + "());\n";
}

builder += "\t\t\n"+
"\t\tsPresenterBinders = new HashMap<>();\n";

for (Map.Entry<TypeElement, List<TypeElement>> keyValue : elementListMap.entrySet()) {
List<Map.Entry<TypeElement, List<TypeElement>>> elementListMapEntries = new ArrayList<>(elementListMap.entrySet());
Collections.sort(elementListMapEntries, new Comparator<Map.Entry<TypeElement, List<TypeElement>>>() {
@Override
public int compare(Map.Entry<TypeElement, List<TypeElement>> entry1, Map.Entry<TypeElement, List<TypeElement>> entry2) {
return entry1.getKey().getQualifiedName().toString().compareTo(entry2.getKey().getQualifiedName().toString());
}
});

for (Map.Entry<TypeElement, List<TypeElement>> keyValue : elementListMapEntries) {
builder += "\t\tsPresenterBinders.put(" + keyValue.getKey().getQualifiedName() + ".class, Arrays.<Object>asList(";

boolean isFirst = true;
Expand All @@ -99,7 +111,10 @@ public static String generate(List<String> presenterClassNames, Set<TypeElement>
builder += "\t\t\n" +
"\t\tsStrategies = new HashMap<>();\n";

for (String strategyClass : strategyClasses) {
List<String> strategyClassesList = new ArrayList<>(strategyClasses);
Collections.sort(strategyClassesList);

for (String strategyClass : strategyClassesList) {
builder += "\t\tsStrategies.put(" + strategyClass + ", new " + strategyClass.substring(0, strategyClass.lastIndexOf('.')) + "());\n";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,8 @@ public Set<TypeElement> getPresentersContainers() {
}

private static String generateGetPresentersMethod(final String builder, final List<Field> fields, String parentClassName) {
String s = "\tpublic List<PresenterField<?, ? super " + parentClassName + ">> getPresenterFields() {\n" +
"\t\tList<PresenterField<?, ? super " + parentClassName + ">> presenters = new ArrayList<>();\n" +
String s = "\tpublic List<PresenterField<" + parentClassName + ">> getPresenterFields() {\n" +
"\t\tList<PresenterField<" + parentClassName + ">> presenters = new ArrayList<>();\n" +
"\n";


Expand All @@ -345,21 +345,23 @@ private static String generateGetPresentersMethod(final String builder, final Li

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" +
String tag = field.getTag();
tag = tag != null ? tag : "\"" + field.getName() + "\"";
String s = "\tpublic class " + field.getGeneratedClassName() + " extends PresenterField<" + targetClass + "> {\n" +
"\t\tpublic " + field.getGeneratedClassName() + "() {\n" +
"\t\t\tsuper(" + field.getTag() + ", PresenterType." + field.getType().name() + ", " + field.getPresenterId() + ", " + clazz + ".class);\n" +
"\t\t\tsuper(" + tag + ", PresenterType." + field.getType().name() + ", " + field.getPresenterId() + ", " + clazz + ".class);\n" +
"\t\t}\n" +
"\n" +
"\t\t@Override\n" +
"\t\tpublic void bind(Object target, MvpPresenter presenter) {\n" +
"\t\t\t((" + targetClass + ") target)." + field.getName() + " = (" + clazz.getQualifiedName() + ") presenter;\n" +
"\t\tpublic void bind(" + targetClass + " target, MvpPresenter presenter) {\n" +
"\t\t\ttarget." + field.getName() + " = (" + clazz.getQualifiedName() + ") presenter;\n" +
"\t\t}\n";

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ private List<Method> getMethods(Map<String, String> types, TypeElement typeEleme

List<Argument> arguments = new ArrayList<>();
for (VariableElement parameter : parameters) {
arguments.add(new Argument(fillGenerics(methodTypes, parameter.asType()), parameter.toString()));
arguments.add(new Argument(fillGenerics(methodTypes, parameter.asType()), parameter.toString(), parameter.getAnnotationMirrors()));
}

List<String> throwTypes = new ArrayList<>();
Expand Down Expand Up @@ -452,15 +452,17 @@ public String toString() {
private static class Argument {
String type;
String name;
List<? extends AnnotationMirror> annotations;

public Argument(String type, String name) {
public Argument(String type, String name, List<? extends AnnotationMirror> annotations) {
this.type = type;
this.name = name;
this.annotations = annotations;
}

@Override
public String toString() {
return type + " " + name;
return join(" ", annotations) + " " + type + " " + name;
}

@Override
Expand Down
24 changes: 21 additions & 3 deletions moxy-templates/Kotlin/MoxyActivity/globals.xml.ftl
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
<?xml version="1.0"?>
<globals>
<#include "../common/common_globals.xml.ftl" />
<global id="subpackage" value="<#if useSubPackage>${subPackage}/<#else></#if>" />
<global id="dotSubpackage" value="<#if useSubPackage>.${subPackage}<#else></#if>" />

<global id="superClassName" type="string" value="
<#if superClass == 'baseActivity'>BaseActivity
<#elseif superClass == 'appCompat'>MvpAppCompatActivity
<#else>MvpActivity</#if>
" />

<global id="superClassFqcn" type="string" value="
<#if superClass == 'baseActivity'>${packageName}.ui.activity.BaseActivity
<#elseif superClass == 'appCompat'>com.arellomobile.mvp.MvpAppCompatActivity
<#else>com.arellomobile.mvp.MvpActivity</#if>
" />

<global id="manifestOut" value="${manifestDir}" />
<global id="useSupport" type="boolean" value="${(minApiLevel lt 11)?string}" />
<global id="resOut" value="${resDir}" />
<global id="srcOut" value="${srcDir}/${slashedPackageName(packageName)}" />
<global id="relativePackage" value=".ui.activity" />
<global id="subpackage" value="<#if useSubPackage>${subPackage}/<#else></#if>" />
<global id="dotSubpackage" value="<#if useSubPackage>.${subPackage}<#else></#if>" />

</globals>
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@ package ${packageName}.ui.activity${dotSubpackage}
import android.content.Context
import android.content.Intent
import android.os.Bundle
<#if !extendsBaseActivity>
import com.arellomobile.mvp.MvpActivity
</#if>

import com.arellomobile.mvp.presenter.InjectPresenter
import ${packageName}.R
import ${packageName}.presentation.view${dotSubpackage}.${viewName}
import ${packageName}.presentation.presenter${dotSubpackage}.${presenterName}
<#if extendsBaseActivity>
import ${packageName}.ui.activity.BaseActivity

import ${superClassFqcn};

<#if createProvidesMethod>
import com.arellomobile.mvp.presenter.ProvidePresenter;
</#if>

class ${className} : <#if extendsBaseActivity>BaseActivity()<#else>MvpActivity()</#if>, ${viewName} {

class ${className} : ${superClassName}(), ${viewName} {
companion object {
const val TAG = "${className}"
<#if includeFactory>
Expand All @@ -25,6 +27,11 @@ class ${className} : <#if extendsBaseActivity>BaseActivity()<#else>MvpActivity()
@InjectPresenter
lateinit var m${presenterName}: ${presenterName}

<#if createProvidesMethod>
@ProvidePresenter
fun providePresenter() : ${presenterName} = ${presenterName}()
</#if>

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
<#if includeLayout>
Expand Down
Loading

0 comments on commit 147fce0

Please sign in to comment.