11package eu .inloop .viewmodel ;
22import android .app .Activity ;
33import android .support .annotation .NonNull ;
4+ import android .support .annotation .Nullable ;
45import android .support .v4 .app .FragmentActivity ;
56
67import java .util .HashMap ;
1314 */
1415public class ViewModelProvider {
1516
17+ @ NonNull
1618 private final HashMap <String , AbstractViewModel <? extends IView >> mViewModelCache ;
1719
20+ @ NonNull
1821 public static ViewModelProvider newInstance (@ NonNull final FragmentActivity activity ) {
1922 if (activity .getLastCustomNonConfigurationInstance () == null ) {
2023 return new ViewModelProvider ();
2124 } else {
22- return (ViewModelProvider ) activity .getLastCustomNonConfigurationInstance ();
25+ return (ViewModelProvider ) activity .getLastCustomNonConfigurationInstance ();
2326 }
2427 }
2528
2629 @ SuppressWarnings ({"deprecation" , "unused" })
30+ @ NonNull
2731 @ Deprecated
2832 public static ViewModelProvider newInstance (@ NonNull final Activity activity ) {
2933 if (activity .getLastNonConfigurationInstance () == null ) {
3034 return new ViewModelProvider ();
3135 } else {
32- return (ViewModelProvider ) activity .getLastNonConfigurationInstance ();
36+ return (ViewModelProvider ) activity .getLastNonConfigurationInstance ();
3337 }
3438 }
3539
3640 private ViewModelProvider () {
3741 mViewModelCache = new HashMap <>();
3842 }
3943
40- public synchronized void remove (String modeIdentifier ) {
44+ public synchronized void remove (@ Nullable String modeIdentifier ) {
4145 mViewModelCache .remove (modeIdentifier );
4246 }
4347
@@ -47,29 +51,29 @@ public synchronized void removeAllViewModels() {
4751
4852 @ SuppressWarnings ("unchecked" )
4953 @ NonNull
50- public synchronized <T extends IView > ViewModelWrapper <T > getViewModel (final String modelIdentifier ,
51- final @ NonNull Class <? extends AbstractViewModel <T >> viewModelClass ) {
54+ public synchronized <T extends IView > ViewModelWrapper <T > getViewModel (@ NonNull final String modelIdentifier ,
55+ @ NonNull final Class <? extends AbstractViewModel <T >> viewModelClass ) {
5256 AbstractViewModel <T > instance = (AbstractViewModel <T >) mViewModelCache .get (modelIdentifier );
5357 if (instance != null ) {
5458 return new ViewModelWrapper <>(instance , false );
5559 }
5660
5761 try {
5862 instance = viewModelClass .newInstance ();
59- instance .setUniqueIdentifier (modelIdentifier );
60- mViewModelCache .put (modelIdentifier , instance );
61- return new ViewModelWrapper <>(instance , true );
62- } catch (Exception ex ) {
63+ } catch (final Exception ex ) {
6364 throw new RuntimeException (ex );
6465 }
66+ instance .setUniqueIdentifier (modelIdentifier );
67+ mViewModelCache .put (modelIdentifier , instance );
68+ return new ViewModelWrapper <>(instance , true );
6569 }
6670
67- public static class ViewModelWrapper <T extends IView > {
71+ final static class ViewModelWrapper <T extends IView > {
6872 @ NonNull
69- public final AbstractViewModel <T > viewModel ;
70- public final boolean wasCreated ;
73+ final AbstractViewModel <T > viewModel ;
74+ final boolean wasCreated ;
7175
72- private ViewModelWrapper (@ NonNull AbstractViewModel <T > mViewModel , boolean mWasCreated ) {
76+ private ViewModelWrapper (@ NonNull AbstractViewModel <T > mViewModel , final boolean mWasCreated ) {
7377 this .viewModel = mViewModel ;
7478 this .wasCreated = mWasCreated ;
7579 }
0 commit comments