Skip to content

Commit

Permalink
reformatting code
Browse files Browse the repository at this point in the history
  • Loading branch information
andrzejchm committed Aug 10, 2016
1 parent 8383511 commit be27484
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 52 deletions.
24 changes: 14 additions & 10 deletions library/src/main/java/io/appflate/droidmvp/DroidMVPActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,16 @@
public abstract class DroidMVPActivity<M, V extends DroidMVPView, P extends DroidMVPPresenter<V, M>>
extends AppCompatActivity implements DroidMVPView {

private DroidMVPViewDelegate<M, V, P> mvpDelegate = new DroidMVPViewDelegate<M, V, P>(createPresentationModelSerializer()) {
@NonNull @Override protected P createPresenter() {
return DroidMVPActivity.this.createPresenter();
}
private DroidMVPViewDelegate<M, V, P> mvpDelegate =
new DroidMVPViewDelegate<M, V, P>(createPresentationModelSerializer()) {
@NonNull @Override protected P createPresenter() {
return DroidMVPActivity.this.createPresenter();
}

@NonNull @Override protected M createPresentationModel() {
return DroidMVPActivity.this.createPresentationModel();
}
};
@NonNull @Override protected M createPresentationModel() {
return DroidMVPActivity.this.createPresentationModel();
}
};

@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -65,9 +66,12 @@ public abstract class DroidMVPActivity<M, V extends DroidMVPView, P extends Droi
}

/**
* Feel free to override this method that returns your own implementation of PresentationModelSerializer.
* Feel free to override this method that returns your own implementation of
* PresentationModelSerializer.
* Useful if you use a Parceler library for example
* @return an instance of PresentationModelSerializer that will serialize and deserialize your PresentationModel from Bundle.
*
* @return an instance of PresentationModelSerializer that will serialize and deserialize your
* PresentationModel from Bundle.
*/
protected PresentationModelSerializer<M> createPresentationModelSerializer() {
return new ParcelableAndSerializablePresentationModelSerializer<>();
Expand Down
54 changes: 23 additions & 31 deletions library/src/main/java/io/appflate/droidmvp/DroidMVPFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,64 +22,58 @@
import android.support.v4.app.Fragment;

public abstract class DroidMVPFragment<M, V extends DroidMVPView, P extends DroidMVPPresenter<V, M>>
extends Fragment implements DroidMVPView {
extends Fragment implements DroidMVPView {

private DroidMVPViewDelegate<M, V, P> mvpDelegate = new DroidMVPViewDelegate<M, V, P>(createPresentationModelSerializer()) {
@NonNull
@Override
protected P createPresenter() {
return DroidMVPFragment.this.createPresenter();
}
private DroidMVPViewDelegate<M, V, P> mvpDelegate =
new DroidMVPViewDelegate<M, V, P>(createPresentationModelSerializer()) {
@NonNull @Override protected P createPresenter() {
return DroidMVPFragment.this.createPresenter();
}

@NonNull
@Override
protected M createPresentationModel() {
return DroidMVPFragment.this.createPresentationModel();
}
};
@NonNull @Override protected M createPresentationModel() {
return DroidMVPFragment.this.createPresentationModel();
}
};

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@Override public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
performFieldInjection();
mvpDelegate.onCreate(this, savedInstanceState);
}

@Override
public void onStart() {
@Override public void onStart() {
super.onStart();
mvpDelegate.onStart((V) this);
}

@Override
public void onSaveInstanceState(Bundle outState) {
@Override public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mvpDelegate.onSaveInstanceState(outState);
}

@Override
public void onStop() {
@Override public void onStop() {
super.onStop();
mvpDelegate.onStop();
}

@Override
public void onDestroy() {
@Override public void onDestroy() {
super.onDestroy();
mvpDelegate.onDestroy();
}

/**
* Feel free to override this method that returns your own implementation of PresentationModelSerializer.
* Feel free to override this method that returns your own implementation of
* PresentationModelSerializer.
* Useful if you use a Parceler library for example
* @return an instance of PresentationModelSerializer that will serialize and deserialize your PresentationModel from Bundle.
*
* @return an instance of PresentationModelSerializer that will serialize and deserialize your
* PresentationModel from Bundle.
*/
protected PresentationModelSerializer<M> createPresentationModelSerializer() {
return new ParcelableAndSerializablePresentationModelSerializer<>();
}

@NonNull
protected P getPresenter() {
@NonNull protected P getPresenter() {
return mvpDelegate.getPresenter();
}

Expand All @@ -96,8 +90,7 @@ protected P getPresenter() {
*
* @return an instance of your Presenter.
*/
@NonNull
protected abstract P createPresenter();
@NonNull protected abstract P createPresenter();

/**
* Used to create the Presentation Model that will be attached to your presenter in #onAttach()
Expand All @@ -111,6 +104,5 @@ protected P getPresenter() {
*
* @return Presentation Model instance used by your Presenter.
*/
@NonNull
protected abstract M createPresentationModel();
@NonNull protected abstract M createPresentationModel();
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,9 @@
package io.appflate.droidmvp;

import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.Serializable;

/**
* Class that makes it possible to write your own custom MVP Views that will fit in the DroidMVP
Expand Down Expand Up @@ -55,7 +53,8 @@ public DroidMVPViewDelegate(@NonNull PresentationModelSerializer<M> serializer)
*/
public void onCreate(DroidMVPView mvpView, @Nullable Bundle savedInstanceState) {
presentationModelKey = mvpView.getClass().getCanonicalName() + "$PresentationModel";
presentationModel = serializer.restorePresentationModel(savedInstanceState,presentationModelKey);
presentationModel =
serializer.restorePresentationModel(savedInstanceState, presentationModelKey);
if (presentationModel == null) {
presentationModel = createPresentationModel();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,38 @@

import android.os.Bundle;
import android.os.Parcelable;

import java.io.Serializable;

/**
* Created by andrzejchm on 10/08/16.
*/
public class ParcelableAndSerializablePresentationModelSerializer<M> implements PresentationModelSerializer<M> {
public class ParcelableAndSerializablePresentationModelSerializer<M>
implements PresentationModelSerializer<M> {
public M restorePresentationModel(Bundle savedInstanceState, String presentationModelKey) {
if (savedInstanceState != null) {
Object potentialPresentationModel = savedInstanceState.get(presentationModelKey);
try {
return (M) potentialPresentationModel;
} catch (ClassCastException ex) {
throw new IllegalStateException(String.format(
"We expected a presentationModel saved in the bundle under the key: \"%s\", but was: %s",
presentationModelKey, potentialPresentationModel.toString()));
"We expected a presentationModel saved in the bundle under the key: \"%s\", but was: %s",
presentationModelKey,
potentialPresentationModel.toString()));
}
}
return null;
}

@Override
public void savePresentationModel(Bundle outState, String presentationModelKey, M presentationModel) {
@Override public void savePresentationModel(Bundle outState, String presentationModelKey,
M presentationModel) {
if (presentationModel instanceof Parcelable) {
outState.putParcelable(presentationModelKey, (Parcelable) presentationModel);
} else if (presentationModel instanceof Serializable) {
outState.putSerializable(presentationModelKey, (Serializable) presentationModel);
} else {
throw new IllegalArgumentException(
"Your presentation model must either implement Parcelable or Serializable interface: "
+ presentationModel.getClass().getCanonicalName());
"Your presentation model must either implement Parcelable or Serializable interface: "
+ presentationModel.getClass().getCanonicalName());
}
}
}

0 comments on commit be27484

Please sign in to comment.