Skip to content

Commit

Permalink
Merge branch 'release/1.4.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
senneco committed Jan 10, 2017
2 parents b284f02 + d3590c2 commit cda3782
Show file tree
Hide file tree
Showing 18 changed files with 337 additions and 64 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,36 +76,36 @@ Base modules integration:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy:1.4.3'
provided 'com.arello-mobile:moxy-compiler:1.4.3'
compile 'com.arello-mobile:moxy:1.4.4'
provided 'com.arello-mobile:moxy-compiler:1.4.4'
}
```
If you want to see generated code, use `apt` instead of `provided` dependency type:
```groovy
dependencies {
...
apt 'com.arello-mobile:moxy-compiler:1.4.3'
apt 'com.arello-mobile:moxy-compiler:1.4.4'
}
```
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.3'
annotationProcessor 'com.arello-mobile:moxy-compiler:1.4.4'
}
```
For additional base view classes `MvpActivity` and `MvpFragment` add this:
```groovy
dependencies {
...
compile 'com.arello-mobile:moxy-android:1.4.3'
compile 'com.arello-mobile:moxy-android:1.4.4'
}
```
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.3'
compile 'com.arello-mobile:moxy-app-compat:1.4.4'
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.3'
kapt 'com.arello-mobile:moxy-compiler:1.4.4'
}
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 = 36
targetVersionName = "1.4.3"
targetVersionCode = 37
targetVersionName = "1.4.4"
}

task clean(type: Delete) {
Expand Down
14 changes: 5 additions & 9 deletions moxy-android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -111,15 +111,11 @@ def getBasePom(String libName) {
}

return basePom.withXml {
asNode().dependencies.'*'.findAll() {
it.version.text() == 'unspecified' && project.configurations.compile.allDependencies.find { dep ->
dep.name == it.artifactId.text()
}
}.each() {
it.scope*.value = 'compile'
it.groupId*.value = 'com.arello-mobile'
it.artifactId*.value = libName
it.version*.value = '${project.version}'
asNode().dependencies.'*'.findAll {
it.artifactId.text().contains('moxy')
}.each {
it.groupId*.value = targetGroupId
it.version*.value = targetVersionName
}
}

Expand Down
16 changes: 5 additions & 11 deletions moxy-app-compat/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -111,19 +111,13 @@ def getBasePom(String libName) {
}

return basePom.withXml {
asNode().dependencies.'*'.findAll() {
it.version.text() == 'unspecified' && project.configurations.compile.allDependencies.find { dep ->
dep.name == it.artifactId.text()
}
}.each() {
it.scope*.value = 'compile'
it.groupId*.value = 'com.arello-mobile'
it.artifactId*.value = libName
it.version*.value = '${project.version}'
asNode().dependencies.'*'.findAll {
it.artifactId.text().contains('moxy')
}.each {
it.groupId*.value = targetGroupId
it.version*.value = targetVersionName
}
}


}

task copyJars << {
Expand Down
17 changes: 5 additions & 12 deletions moxy-compiler/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -103,20 +103,13 @@ def getBasePom(String libName) {
}

return basePom.withXml {

asNode().dependencies.'*'.findAll() {
it.version.text() == 'unspecified' && project.configurations.compile.allDependencies.find { dep ->
dep.name == it.artifactId.text()
}
}.each() {
it.scope*.value = 'compile'
it.groupId*.value = 'com.arello-mobile'
it.artifactId*.value = libName
it.version*.value = '${project.version}'
asNode().dependencies.'*'.findAll {
it.artifactId.text().contains('moxy')
}.each {
it.groupId*.value = targetGroupId
it.version*.value = targetVersionName
}
}


}

task copyJars << {
Expand Down
11 changes: 5 additions & 6 deletions moxy/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,11 @@ def getBasePom() {
}

return basePom.withXml {
asNode().dependencies.'*'.findAll() {
it.version.text() == '4.0.+' && project.configurations.compile.allDependencies.find { dep ->
dep.name == it.artifactId.text()
}
}.each() {
it.version*.value = '[4.0,)'
asNode().dependencies.'*'.findAll {
it.artifactId.text().contains('moxy')
}.each {
it.groupId*.value = targetGroupId
it.version*.value = targetVersionName
}
}
}
Expand Down
22 changes: 11 additions & 11 deletions moxy/src/main/java/com/arellomobile/mvp/MvpProcessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@ public class MvpProcessor {
public static final String VIEW_STATE_PROVIDER_SUFFIX = "$$ViewStateProvider";

/**
* 1) Generates tag for identification MvpPresenter
* <p>
* 2) Checks if presenter with tag is already exist in {@link com.arellomobile.mvp.PresenterStore}, and returns it.
* <p>
* 3)If {@link com.arellomobile.mvp.PresenterStore} doesn't contain MvpPresenter with current tag, {@link PresenterField} will create it
* <p>1) Generates tag for identification MvpPresenter</p>
* <p>2) Checks if presenter with tag is already exist in {@link com.arellomobile.mvp.PresenterStore}, and returns it</p>
* <p>3) If {@link com.arellomobile.mvp.PresenterStore} doesn't contain MvpPresenter with current tag, {@link PresenterField} will create it</p>
*
* @param <Delegated> type of delegated
* @param target object that want injection
Expand All @@ -37,9 +35,12 @@ private <Delegated> MvpPresenter<? super Delegated> getMvpPresenter(Delegated ta
PresenterStore presenterStore = MvpFacade.getInstance().getPresenterStore();

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

//noinspection unchecked
MvpPresenter<? super Delegated> presenter = presenterStore.get(type, tag, presenterClass);
Expand All @@ -64,9 +65,8 @@ private <Delegated> MvpPresenter<? super Delegated> getMvpPresenter(Delegated ta


/**
* Gets presenters {@link java.util.List} annotated with {@link com.arellomobile.mvp.presenter.InjectPresenter} for view.
* <p>
* See full info about getting presenter instance in {@link #getMvpPresenter}
* <p>Gets presenters {@link java.util.List} annotated with {@link com.arellomobile.mvp.presenter.InjectPresenter} for view.</p>
* <p>See full info about getting presenter instance in {@link #getMvpPresenter}</p>
*
* @param delegated class contains presenter
* @param delegateTag unique tag generated by {@link MvpDelegate#generateTag()}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.arellomobile.mvp.provide_methods_test;

import android.os.Bundle;

import com.arellomobile.mvp.MvpDelegate;
import com.arellomobile.mvp.provide_methods_test.resources.LocalProvidedView;
import com.arellomobile.mvp.provide_methods_test.resources.TwoLocalProvidedView;
import com.arellomobile.mvp.provide_methods_test.resources.TwoWeakWithSamePresenterIdView;
import com.arellomobile.mvp.provide_methods_test.resources.WeakProvidedView;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

/**
* Date: 30.12.2016
* Time: 11:18
*
* @author Yuri Shmakov
*/
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class ProvideMethodsTest {

@Test
public void testLocalIsProvided() {
LocalProvidedView view = new LocalProvidedView();

view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());

Assert.assertNotNull(view.oneLocalPresenter);
Assert.assertSame(view.oneLocalPresenter, view.oneLocalProvidedPresenter);
}

@Test
public void testTwoLocalUseDifferentProvided() {
TwoLocalProvidedView view = new TwoLocalProvidedView();

view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());

Assert.assertNotSame(view.oneLocalPresenter, view.secondLocalPresenter);
}

@Test
public void testWeakPresenterWithHardcodedTag() {
WeakProvidedView view = new WeakProvidedView();

view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());

Assert.assertNotNull(view.weakPresenter);
Assert.assertSame(view.weakPresenter, view.weakProvidedPresenter);
}

@Test
public void testTwoWeakPresenterWithSamePresenterIdTest() {
TwoWeakWithSamePresenterIdView view = new TwoWeakWithSamePresenterIdView();

view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());

Assert.assertNotNull(view.oneWeakPresenter);
Assert.assertNotNull(view.secondWeakPresenter);

Assert.assertSame(view.oneWeakPresenter, view.secondWeakPresenter);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.arellomobile.mvp.provide_methods_test.resources;

import com.arellomobile.mvp.MvpDelegate;
import com.arellomobile.mvp.presenter.InjectPresenter;
import com.arellomobile.mvp.presenter.ProvidePresenter;

/**
* Date: 30.12.2016
* Time: 12:05
*
* @author Yuri Shmakov
*/

public class LocalProvidedView implements TestView {
@InjectPresenter
public TestPresenter oneLocalPresenter;
public TestPresenter oneLocalProvidedPresenter;

public MvpDelegate<LocalProvidedView> delegate;

@ProvidePresenter
TestPresenter provideLocalPresenter() {
oneLocalProvidedPresenter = new TestPresenter();
return oneLocalProvidedPresenter;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.arellomobile.mvp.provide_methods_test.resources;

import com.arellomobile.mvp.MvpDelegate;
import com.arellomobile.mvp.presenter.InjectPresenter;
import com.arellomobile.mvp.presenter.ProvidePresenter;

/**
* Date: 30.12.2016
* Time: 10:12
*
* @author Yuri Shmakov
*/

public class SuperView implements TestView {
@InjectPresenter
public TestPresenter oneLocalPresenter;
public TestPresenter oneLocalProvidedPresenter;

@InjectPresenter
public TestPresenter secondLocalPresenter;

@InjectPresenter(presenterId = "one_global")
public TestPresenter oneGlobalPresenter;

@InjectPresenter(presenterId = "second_global")
public TestPresenter secondGlobalPresenter;

public MvpDelegate<SuperView> delegate;

@ProvidePresenter
public TestPresenter provideLocalPresenter() {
oneLocalProvidedPresenter = new TestPresenter();
return oneLocalProvidedPresenter;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.arellomobile.mvp.provide_methods_test.resources;

import com.arellomobile.mvp.MvpPresenter;

/**
* Date: 30.12.2016
* Time: 10:10
*
* @author Yuri Shmakov
*/

public class TestPresenter extends MvpPresenter<TestView> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.arellomobile.mvp.provide_methods_test.resources;

import com.arellomobile.mvp.MvpView;

/**
* Date: 30.12.2016
* Time: 10:11
*
* @author Yuri Shmakov
*/

public interface TestView extends MvpView {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.arellomobile.mvp.provide_methods_test.resources;

import com.arellomobile.mvp.MvpDelegate;
import com.arellomobile.mvp.presenter.InjectPresenter;
import com.arellomobile.mvp.presenter.ProvidePresenter;

/**
* Date: 30.12.2016
* Time: 12:39
*
* @author Yuri Shmakov
*/

public class TwoLocalProvidedView implements TestView {

@InjectPresenter
public TestPresenter oneLocalPresenter;

@InjectPresenter
public TestPresenter secondLocalPresenter;

public MvpDelegate<TwoLocalProvidedView> delegate;

@ProvidePresenter
TestPresenter provideLocalPresenter() {
return new TestPresenter();
}
}
Loading

0 comments on commit cda3782

Please sign in to comment.