Browse Source

LuPromise refractor; tests

tags/v1.0.0
Robin Thoni 7 years ago
parent
commit
4f9720367a
21 changed files with 384 additions and 137 deletions
  1. 5
    3
      app/src/main/java/com/rthoni/stssaguenay/business/RoutesBusiness.java
  2. 5
    3
      app/src/main/java/com/rthoni/stssaguenay/business/StopsBusiness.java
  3. 2
    1
      app/src/main/java/com/rthoni/stssaguenay/dataaccess/RoutesDataAccess.java
  4. 2
    1
      app/src/main/java/com/rthoni/stssaguenay/dataaccess/SchedulesDataAccess.java
  5. 2
    1
      app/src/main/java/com/rthoni/stssaguenay/dataaccess/StopsDataAccess.java
  6. 3
    2
      app/src/main/java/com/rthoni/stssaguenay/dataaccess/UsersSettingsDataAccess.java
  7. 11
    9
      app/src/main/java/com/rthoni/stssaguenay/ui/activities/MainActivity.java
  8. 3
    2
      app/src/main/java/com/rthoni/stssaguenay/ui/activities/StopPickerActivity.java
  9. 7
    5
      app/src/main/java/com/rthoni/stssaguenay/ui/fragments/HomeFragment.java
  10. 7
    5
      app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopListPickerFragment.java
  11. 7
    5
      app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopMapPickerFragment.java
  12. 7
    5
      app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopRoutesPickerFragment.java
  13. 8
    6
      app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopViewerFragment.java
  14. 9
    0
      luticateutils/src/main/java/com/luticate/utils/business/LuConsumer.java
  15. 9
    0
      luticateutils/src/main/java/com/luticate/utils/business/LuConverter.java
  16. 55
    76
      luticateutils/src/main/java/com/luticate/utils/business/LuPromise.java
  17. 8
    7
      luticateutils/src/main/java/com/luticate/utils/dataaccess/LuRequest.java
  18. 44
    0
      luticateutils/src/main/java/com/luticate/utils/dbo/LuPromiseError.java
  19. 6
    4
      luticateutils/src/main/java/com/luticate/utils/ui/fragments/AbstractPaginationFragment.java
  20. 3
    2
      luticateutils/src/main/java/com/luticate/utils/ui/views/AbstractPaginationView.java
  21. 181
    0
      luticateutils/src/test/java/com/luticate/utils/PromiseTest.java

+ 5
- 3
app/src/main/java/com/rthoni/stssaguenay/business/RoutesBusiness.java View File

@@ -1,7 +1,9 @@
1 1
 package com.rthoni.stssaguenay.business;
2 2
 
3
+import com.luticate.utils.business.LuConsumer;
3 4
 import com.luticate.utils.business.LuPromise;
4 5
 import com.luticate.utils.dbo.LuDataAccessConfigDbo;
6
+import com.luticate.utils.dbo.LuPromiseError;
5 7
 import com.rthoni.stssaguenay.dataaccess.RoutesDataAccess;
6 8
 import com.rthoni.stssaguenay.dbo.RoutesDbo;
7 9
 
@@ -20,15 +22,15 @@ public class RoutesBusiness {
20 22
     {
21 23
         final LuPromise<List<RoutesDbo>> promise = new LuPromise<>();
22 24
         if (_routesDbos == null) {
23
-            RoutesDataAccess.getAll(config).then(new LuPromise.LuConsumer<List<RoutesDbo>>() {
25
+            RoutesDataAccess.getAll(config).then(new LuConsumer<List<RoutesDbo>>() {
24 26
                 @Override
25 27
                 public void execute(List<RoutesDbo> data) {
26 28
                     _routesDbos = data;
27 29
                     promise.resolve(data);
28 30
                 }
29
-            }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
31
+            }, new LuConsumer<LuPromiseError>() {
30 32
                 @Override
31
-                public void execute(LuPromise.LuPromiseError data) {
33
+                public void execute(LuPromiseError data) {
32 34
                     promise.reject(data);
33 35
                 }
34 36
             });

+ 5
- 3
app/src/main/java/com/rthoni/stssaguenay/business/StopsBusiness.java View File

@@ -1,7 +1,9 @@
1 1
 package com.rthoni.stssaguenay.business;
2 2
 
3
+import com.luticate.utils.business.LuConsumer;
3 4
 import com.luticate.utils.business.LuPromise;
4 5
 import com.luticate.utils.dbo.LuDataAccessConfigDbo;
6
+import com.luticate.utils.dbo.LuPromiseError;
5 7
 import com.rthoni.stssaguenay.dataaccess.StopsDataAccess;
6 8
 import com.rthoni.stssaguenay.dbo.StopsDbo;
7 9
 
@@ -18,15 +20,15 @@ public class StopsBusiness {
18 20
     {
19 21
         final LuPromise<List<StopsDbo>> promise = new LuPromise<>();
20 22
         if (_stopsDbos == null) {
21
-            StopsDataAccess.getAll(config).then(new LuPromise.LuConsumer<List<StopsDbo>>() {
23
+            StopsDataAccess.getAll(config).then(new LuConsumer<List<StopsDbo>>() {
22 24
                 @Override
23 25
                 public void execute(List<StopsDbo> data) {
24 26
                     _stopsDbos = data;
25 27
                     promise.resolve(data);
26 28
                 }
27
-            }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
29
+            }, new LuConsumer<LuPromiseError>() {
28 30
                 @Override
29
-                public void execute(LuPromise.LuPromiseError data) {
31
+                public void execute(LuPromiseError data) {
30 32
                     promise.reject(data);
31 33
                 }
32 34
             });

+ 2
- 1
app/src/main/java/com/rthoni/stssaguenay/dataaccess/RoutesDataAccess.java View File

@@ -1,5 +1,6 @@
1 1
 package com.rthoni.stssaguenay.dataaccess;
2 2
 
3
+import com.luticate.utils.business.LuConverter;
3 4
 import com.luticate.utils.business.LuPromise;
4 5
 import com.luticate.utils.dataaccess.LuDataAccess;
5 6
 import com.luticate.utils.dbo.LuDataAccessConfigDbo;
@@ -16,7 +17,7 @@ public class RoutesDataAccess extends LuDataAccess {
16 17
     public static LuPromise<List<RoutesDbo>> getAll(LuDataAccessConfigDbo config)
17 18
     {
18 19
         return get(config, RoutesDbo.PaginatedRoutesDbo.class, "routes")
19
-                .map(new LuPromise.LuConverter<RoutesDbo.PaginatedRoutesDbo, List<RoutesDbo>>() {
20
+                .map(new LuConverter<RoutesDbo.PaginatedRoutesDbo, List<RoutesDbo>>() {
20 21
                     @Override
21 22
                     public List<RoutesDbo> convert(RoutesDbo.PaginatedRoutesDbo data) {
22 23
                         return data.getData();

+ 2
- 1
app/src/main/java/com/rthoni/stssaguenay/dataaccess/SchedulesDataAccess.java View File

@@ -1,5 +1,6 @@
1 1
 package com.rthoni.stssaguenay.dataaccess;
2 2
 
3
+import com.luticate.utils.business.LuConverter;
3 4
 import com.luticate.utils.business.LuPromise;
4 5
 import com.luticate.utils.dataaccess.LuDataAccess;
5 6
 import com.luticate.utils.dbo.LuDataAccessConfigDbo;
@@ -43,7 +44,7 @@ public class SchedulesDataAccess extends LuDataAccess {
43 44
         }
44 45
         map.put("stops", stops.toString());
45 46
 
46
-        return post(config, SchedulesDbo.SchedulesDboArray.class, "schedules/multiple", map).map(new LuPromise.LuConverter<SchedulesDbo.SchedulesDboArray, List<SchedulesDbo>>() {
47
+        return post(config, SchedulesDbo.SchedulesDboArray.class, "schedules/multiple", map).map(new LuConverter<SchedulesDbo.SchedulesDboArray, List<SchedulesDbo>>() {
47 48
             @Override
48 49
             public List<SchedulesDbo> convert(SchedulesDbo.SchedulesDboArray data) {
49 50
                 return data.getData();

+ 2
- 1
app/src/main/java/com/rthoni/stssaguenay/dataaccess/StopsDataAccess.java View File

@@ -1,5 +1,6 @@
1 1
 package com.rthoni.stssaguenay.dataaccess;
2 2
 
3
+import com.luticate.utils.business.LuConverter;
3 4
 import com.luticate.utils.business.LuPromise;
4 5
 import com.luticate.utils.dataaccess.LuDataAccess;
5 6
 import com.luticate.utils.dbo.LuDataAccessConfigDbo;
@@ -15,7 +16,7 @@ public class StopsDataAccess extends LuDataAccess {
15 16
     public static LuPromise<List<StopsDbo>> getAll(LuDataAccessConfigDbo config)
16 17
     {
17 18
         return get(config, StopsDbo.PaginatedStopsDbo.class, "stops")
18
-        .map(new LuPromise.LuConverter<StopsDbo.PaginatedStopsDbo, List<StopsDbo>>() {
19
+        .map(new LuConverter<StopsDbo.PaginatedStopsDbo, List<StopsDbo>>() {
19 20
             @Override
20 21
             public List<StopsDbo> convert(StopsDbo.PaginatedStopsDbo data) {
21 22
                 return data.getData();

+ 3
- 2
app/src/main/java/com/rthoni/stssaguenay/dataaccess/UsersSettingsDataAccess.java View File

@@ -1,5 +1,6 @@
1 1
 package com.rthoni.stssaguenay.dataaccess;
2 2
 
3
+import com.luticate.utils.business.LuConverter;
3 4
 import com.luticate.utils.business.LuPromise;
4 5
 import com.luticate.utils.dataaccess.LuDataAccess;
5 6
 import com.luticate.utils.dbo.LuBoolDbo;
@@ -39,7 +40,7 @@ public class UsersSettingsDataAccess extends LuDataAccess {
39 40
         HashMap<String, String> map = new HashMap<>();
40 41
         map.put("id", JSONObject.quote(id));
41 42
         return get(config, LuStringDbo.class, "users/settings", map)
42
-                .map(new LuPromise.LuConverter<LuStringDbo, String>() {
43
+                .map(new LuConverter<LuStringDbo, String>() {
43 44
                     @Override
44 45
                     public String convert(LuStringDbo data) {
45 46
                         return data.getString();
@@ -53,7 +54,7 @@ public class UsersSettingsDataAccess extends LuDataAccess {
53 54
         map.put("id", JSONObject.quote(id));
54 55
         map.put("settings", JSONObject.quote(data));
55 56
         return post(config, LuBoolDbo.class, "users/settings", map)
56
-                .map(new LuPromise.LuConverter<LuBoolDbo, LuVoidDbo>() {
57
+                .map(new LuConverter<LuBoolDbo, LuVoidDbo>() {
57 58
                     @Override
58 59
                     public LuVoidDbo convert(LuBoolDbo data) {
59 60
                         return new LuVoidDbo();

+ 11
- 9
app/src/main/java/com/rthoni/stssaguenay/ui/activities/MainActivity.java View File

@@ -35,8 +35,10 @@ import com.github.clans.fab.FloatingActionMenu;
35 35
 import com.google.android.gms.ads.AdRequest;
36 36
 import com.google.android.gms.ads.AdView;
37 37
 import com.google.android.gms.ads.MobileAds;
38
+import com.luticate.utils.business.LuConsumer;
38 39
 import com.luticate.utils.business.LuPromise;
39 40
 import com.luticate.utils.dataaccess.LuRequest;
41
+import com.luticate.utils.dbo.LuPromiseError;
40 42
 import com.luticate.utils.dbo.LuVoidDbo;
41 43
 import com.rthoni.stssaguenay.R;
42 44
 import com.rthoni.stssaguenay.business.STSBusiness;
@@ -214,7 +216,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
214 216
     {
215 217
         _fab.setVisibility(View.VISIBLE);
216 218
         HomeFragment f = new HomeFragment();
217
-        f.setOnFavouriteStopClicked(new LuPromise.LuConsumer<UserFavouriteStopsDbo>() {
219
+        f.setOnFavouriteStopClicked(new LuConsumer<UserFavouriteStopsDbo>() {
218 220
             @Override
219 221
             public void execute(UserFavouriteStopsDbo data) {
220 222
                 goToStop(data.getStop());
@@ -398,7 +400,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
398 400
 
399 401
         UserDbo user = STSBusiness.getLoggedUser(MainActivity.this);
400 402
         UsersSettingsBusiness.get(STSBusiness.getConfig(this), user.getId())
401
-                .then(new LuPromise.LuConsumer<String>() {
403
+                .then(new LuConsumer<String>() {
402 404
                     @Override
403 405
                     public void execute(final String data) {
404 406
                         progressDialog.dismiss();
@@ -406,7 +408,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
406 408
                             Toast.makeText(MainActivity.this, R.string.encryption_empty, Toast.LENGTH_LONG).show();
407 409
                             return;
408 410
                         }
409
-                        askPassword(false).then(new LuPromise.LuConsumer<String>() {
411
+                        askPassword(false).then(new LuConsumer<String>() {
410 412
                             @Override
411 413
                             public void execute(String password) {
412 414
                                 UsersSettingsDbo settingsDbo = UsersSettingsBusiness.decryptSettings(data, password);
@@ -421,9 +423,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
421 423
                             }
422 424
                         });
423 425
                     }
424
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
426
+                }, new LuConsumer<LuPromiseError>() {
425 427
                     @Override
426
-                    public void execute(LuPromise.LuPromiseError data) {
428
+                    public void execute(LuPromiseError data) {
427 429
                         progressDialog.dismiss();
428 430
                         Toast.makeText(MainActivity.this, data.toString(), Toast.LENGTH_LONG).show();
429 431
                     }
@@ -432,7 +434,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
432 434
 
433 435
     public void backupSettings()
434 436
     {
435
-        askPassword(true).then(new LuPromise.LuConsumer<String>() {
437
+        askPassword(true).then(new LuConsumer<String>() {
436 438
             @Override
437 439
             public void execute(String password) {
438 440
                 UserDbo user = STSBusiness.getLoggedUser(MainActivity.this);
@@ -445,15 +447,15 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
445 447
                 progressDialog.setTitle(R.string.loading);
446 448
                 progressDialog.setMessage(getString(R.string.settings_backing_up));
447 449
                 UsersSettingsBusiness.put(STSBusiness.getConfig(MainActivity.this), data, user.getId())
448
-                        .then(new LuPromise.LuConsumer<LuVoidDbo>() {
450
+                        .then(new LuConsumer<LuVoidDbo>() {
449 451
                             @Override
450 452
                             public void execute(LuVoidDbo data) {
451 453
                                 progressDialog.dismiss();
452 454
                                 Toast.makeText(MainActivity.this, R.string.settings_backed_up, Toast.LENGTH_LONG).show();
453 455
                             }
454
-                        }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
456
+                        }, new LuConsumer<LuPromiseError>() {
455 457
                             @Override
456
-                            public void execute(LuPromise.LuPromiseError data) {
458
+                            public void execute(LuPromiseError data) {
457 459
                                 progressDialog.dismiss();
458 460
                                 Toast.makeText(MainActivity.this, data.toString(), Toast.LENGTH_LONG).show();
459 461
                             }

+ 3
- 2
app/src/main/java/com/rthoni/stssaguenay/ui/activities/StopPickerActivity.java View File

@@ -8,6 +8,7 @@ import android.support.v7.app.AppCompatActivity;
8 8
 import com.google.android.gms.ads.AdRequest;
9 9
 import com.google.android.gms.ads.AdView;
10 10
 import com.google.android.gms.ads.MobileAds;
11
+import com.luticate.utils.business.LuConsumer;
11 12
 import com.luticate.utils.business.LuPromise;
12 13
 import com.rthoni.stssaguenay.R;
13 14
 import com.rthoni.stssaguenay.dbo.UserFavouriteStopsDbo;
@@ -60,7 +61,7 @@ public class StopPickerActivity extends AppCompatActivity {
60 61
 
61 62
     public void goToStops()
62 63
     {
63
-        LuPromise.LuConsumer<StopsDbo> consumer = new LuPromise.LuConsumer<StopsDbo>() {
64
+        LuConsumer<StopsDbo> consumer = new LuConsumer<StopsDbo>() {
64 65
             @Override
65 66
             public void execute(StopsDbo data) {
66 67
                 if (_selectRoutes) {
@@ -93,7 +94,7 @@ public class StopPickerActivity extends AppCompatActivity {
93 94
     {
94 95
         StopRoutesPickerFragment f = new StopRoutesPickerFragment();
95 96
         f.setStopsDbo(stopDbo);
96
-        f.setOnRoutesSelected(new LuPromise.LuConsumer<UserFavouriteStopsDbo>() {
97
+        f.setOnRoutesSelected(new LuConsumer<UserFavouriteStopsDbo>() {
97 98
             @Override
98 99
             public void execute(UserFavouriteStopsDbo data) {
99 100
                 saveFavouriteStop(data);

+ 7
- 5
app/src/main/java/com/rthoni/stssaguenay/ui/fragments/HomeFragment.java View File

@@ -14,7 +14,9 @@ import android.view.ViewGroup;
14 14
 import android.widget.TextView;
15 15
 import android.widget.Toast;
16 16
 
17
+import com.luticate.utils.business.LuConsumer;
17 18
 import com.luticate.utils.business.LuPromise;
19
+import com.luticate.utils.dbo.LuPromiseError;
18 20
 import com.rthoni.stssaguenay.R;
19 21
 import com.rthoni.stssaguenay.business.STSBusiness;
20 22
 import com.rthoni.stssaguenay.business.SchedulesBusiness;
@@ -46,7 +48,7 @@ public class HomeFragment extends Fragment {
46 48
 
47 49
     private FavouriteStopsAdapter _adapter;
48 50
 
49
-    private LuPromise.LuConsumer<UserFavouriteStopsDbo> _onFavouriteStopClicked;
51
+    private LuConsumer<UserFavouriteStopsDbo> _onFavouriteStopClicked;
50 52
 
51 53
     public static class ViewHolder extends RecyclerView.ViewHolder {
52 54
         public View _parentView;
@@ -212,22 +214,22 @@ public class HomeFragment extends Fragment {
212 214
         LocalDateTime date = LocalDateTime.now(dtz).plusMinutes(-30);
213 215
 
214 216
         SchedulesBusiness.getMultiple(STSBusiness.getConfig(getContext()), _adapter.getFavourites(), date, 10)
215
-                .then(new LuPromise.LuConsumer<List<SchedulesDbo>>() {
217
+                .then(new LuConsumer<List<SchedulesDbo>>() {
216 218
                     @Override
217 219
                     public void execute(List<SchedulesDbo> data) {
218 220
                         _adapter.setSchedules(data);
219 221
                         _swipeRefreshLayout.setRefreshing(false);
220 222
                     }
221
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
223
+                }, new LuConsumer<LuPromiseError>() {
222 224
                     @Override
223
-                    public void execute(LuPromise.LuPromiseError data) {
225
+                    public void execute(LuPromiseError data) {
224 226
                         Toast.makeText(getContext(), data.getError(), Toast.LENGTH_LONG).show();
225 227
                         _swipeRefreshLayout.setRefreshing(false);
226 228
                     }
227 229
                 });
228 230
     }
229 231
 
230
-    public void setOnFavouriteStopClicked(LuPromise.LuConsumer<UserFavouriteStopsDbo> onFavouriteStopClicked) {
232
+    public void setOnFavouriteStopClicked(LuConsumer<UserFavouriteStopsDbo> onFavouriteStopClicked) {
231 233
         _onFavouriteStopClicked = onFavouriteStopClicked;
232 234
     }
233 235
 }

+ 7
- 5
app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopListPickerFragment.java View File

@@ -19,7 +19,9 @@ import android.widget.Filterable;
19 19
 import android.widget.TextView;
20 20
 import android.widget.Toast;
21 21
 
22
+import com.luticate.utils.business.LuConsumer;
22 23
 import com.luticate.utils.business.LuPromise;
24
+import com.luticate.utils.dbo.LuPromiseError;
23 25
 import com.rthoni.stssaguenay.R;
24 26
 import com.rthoni.stssaguenay.business.STSBusiness;
25 27
 import com.rthoni.stssaguenay.business.StopsBusiness;
@@ -46,7 +48,7 @@ public class StopListPickerFragment extends Fragment {
46 48
 
47 49
     private StopsAdapter _stopsAdapter;
48 50
 
49
-    private LuPromise.LuConsumer<StopsDbo> _onStopSelectedConsumer;
51
+    private LuConsumer<StopsDbo> _onStopSelectedConsumer;
50 52
 
51 53
     public static class ViewHolder extends RecyclerView.ViewHolder {
52 54
         public TextView _textView;
@@ -178,15 +180,15 @@ public class StopListPickerFragment extends Fragment {
178 180
         progressDialog.setMessage(getString(R.string.loading_stops));
179 181
 
180 182
         StopsBusiness.getAll(STSBusiness.getConfig(getContext()))
181
-                .then(new LuPromise.LuConsumer<List<StopsDbo>>() {
183
+                .then(new LuConsumer<List<StopsDbo>>() {
182 184
                     @Override
183 185
                     public void execute(List<StopsDbo> data) {
184 186
                         progressDialog.dismiss();
185 187
                         _stopsAdapter.setStops(data, _searchText.getText().toString());
186 188
                     }
187
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
189
+                }, new LuConsumer<LuPromiseError>() {
188 190
                     @Override
189
-                    public void execute(LuPromise.LuPromiseError data) {
191
+                    public void execute(LuPromiseError data) {
190 192
                         progressDialog.dismiss();
191 193
                         _stopsAdapter.setStops(new Vector<StopsDbo>(), _searchText.getText().toString());
192 194
                         Toast.makeText(getContext(), data.getError(), Toast.LENGTH_LONG).show();
@@ -201,7 +203,7 @@ public class StopListPickerFragment extends Fragment {
201 203
         }
202 204
     }
203 205
 
204
-    public void setOnStopSelectedConsumer(LuPromise.LuConsumer<StopsDbo> onStopSelectedConsumer) {
206
+    public void setOnStopSelectedConsumer(LuConsumer<StopsDbo> onStopSelectedConsumer) {
205 207
         _onStopSelectedConsumer = onStopSelectedConsumer;
206 208
     }
207 209
 }

+ 7
- 5
app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopMapPickerFragment.java View File

@@ -24,7 +24,9 @@ import com.google.android.gms.maps.model.MarkerOptions;
24 24
 import com.google.maps.android.clustering.ClusterItem;
25 25
 import com.google.maps.android.clustering.ClusterManager;
26 26
 import com.google.maps.android.clustering.view.DefaultClusterRenderer;
27
+import com.luticate.utils.business.LuConsumer;
27 28
 import com.luticate.utils.business.LuPromise;
29
+import com.luticate.utils.dbo.LuPromiseError;
28 30
 import com.rthoni.stssaguenay.R;
29 31
 import com.rthoni.stssaguenay.business.STSBusiness;
30 32
 import com.rthoni.stssaguenay.business.StopsBusiness;
@@ -90,7 +92,7 @@ public class StopMapPickerFragment extends Fragment {
90 92
     @BindView(R.id.mapView)
91 93
     MapView _mapView;
92 94
 
93
-    private LuPromise.LuConsumer<StopsDbo> _onStopSelectedConsumer;
95
+    private LuConsumer<StopsDbo> _onStopSelectedConsumer;
94 96
 
95 97
     private GoogleMap _map;
96 98
 
@@ -202,7 +204,7 @@ public class StopMapPickerFragment extends Fragment {
202 204
         progressDialog.setMessage(getString(R.string.loading_stops));
203 205
 
204 206
         StopsBusiness.getAll(STSBusiness.getConfig(getContext()))
205
-                .then(new LuPromise.LuConsumer<List<StopsDbo>>() {
207
+                .then(new LuConsumer<List<StopsDbo>>() {
206 208
                     @Override
207 209
                     public void execute(List<StopsDbo> data) {
208 210
                         progressDialog.dismiss();
@@ -211,9 +213,9 @@ public class StopMapPickerFragment extends Fragment {
211 213
                             addStops();
212 214
                         }
213 215
                     }
214
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
216
+                }, new LuConsumer<LuPromiseError>() {
215 217
                     @Override
216
-                    public void execute(LuPromise.LuPromiseError data) {
218
+                    public void execute(LuPromiseError data) {
217 219
                         progressDialog.dismiss();
218 220
                         _stopsDbos = null;
219 221
                         Toast.makeText(getContext(), data.getError(), Toast.LENGTH_LONG).show();
@@ -239,7 +241,7 @@ public class StopMapPickerFragment extends Fragment {
239 241
         }
240 242
     }
241 243
 
242
-    public void setOnStopSelectedConsumer(LuPromise.LuConsumer<StopsDbo> onStopSelectedConsumer) {
244
+    public void setOnStopSelectedConsumer(LuConsumer<StopsDbo> onStopSelectedConsumer) {
243 245
         _onStopSelectedConsumer = onStopSelectedConsumer;
244 246
     }
245 247
 }

+ 7
- 5
app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopRoutesPickerFragment.java View File

@@ -16,7 +16,9 @@ import android.widget.TextView;
16 16
 import android.widget.Toast;
17 17
 
18 18
 import com.amulyakhare.textdrawable.TextDrawable;
19
+import com.luticate.utils.business.LuConsumer;
19 20
 import com.luticate.utils.business.LuPromise;
21
+import com.luticate.utils.dbo.LuPromiseError;
20 22
 import com.rthoni.stssaguenay.R;
21 23
 import com.rthoni.stssaguenay.business.RoutesBusiness;
22 24
 import com.rthoni.stssaguenay.business.STSBusiness;
@@ -48,7 +50,7 @@ public class StopRoutesPickerFragment extends Fragment {
48 50
 
49 51
     private RoutesAdapter _routesAdapter;
50 52
 
51
-    private LuPromise.LuConsumer<UserFavouriteStopsDbo> _onRoutesSelected;
53
+    private LuConsumer<UserFavouriteStopsDbo> _onRoutesSelected;
52 54
 
53 55
     public static class ViewHolder extends RecyclerView.ViewHolder {
54 56
         public ImageView _imageView;
@@ -157,16 +159,16 @@ public class StopRoutesPickerFragment extends Fragment {
157 159
         progressDialog.setMessage(getString(R.string.loading_routes));
158 160
 
159 161
         RoutesBusiness.getAll(STSBusiness.getConfig(getContext()))
160
-                .then(new LuPromise.LuConsumer<List<RoutesDbo>>() {
162
+                .then(new LuConsumer<List<RoutesDbo>>() {
161 163
                     @Override
162 164
                     public void execute(List<RoutesDbo> data) {
163 165
                         progressDialog.dismiss();
164 166
                         List<RoutesDbo> routes = RoutesBusiness.getRoutesDbos(data, _stopsDbo.getRoutes());
165 167
                         _routesAdapter.setRoutes(routes);
166 168
                     }
167
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
169
+                }, new LuConsumer<LuPromiseError>() {
168 170
                     @Override
169
-                    public void execute(LuPromise.LuPromiseError data) {
171
+                    public void execute(LuPromiseError data) {
170 172
                         progressDialog.dismiss();
171 173
                         _routesAdapter.setRoutes(new Vector<RoutesDbo>());
172 174
                         Toast.makeText(getContext(), data.getError(), Toast.LENGTH_LONG).show();
@@ -184,7 +186,7 @@ public class StopRoutesPickerFragment extends Fragment {
184 186
         }
185 187
     }
186 188
 
187
-    public void setOnRoutesSelected(LuPromise.LuConsumer<UserFavouriteStopsDbo> onRoutesSelected) {
189
+    public void setOnRoutesSelected(LuConsumer<UserFavouriteStopsDbo> onRoutesSelected) {
188 190
         _onRoutesSelected = onRoutesSelected;
189 191
     }
190 192
 }

+ 8
- 6
app/src/main/java/com/rthoni/stssaguenay/ui/fragments/StopViewerFragment.java View File

@@ -15,7 +15,9 @@ import android.widget.TextView;
15 15
 import android.widget.Toast;
16 16
 
17 17
 import com.amulyakhare.textdrawable.TextDrawable;
18
+import com.luticate.utils.business.LuConsumer;
18 19
 import com.luticate.utils.business.LuPromise;
20
+import com.luticate.utils.dbo.LuPromiseError;
19 21
 import com.rthoni.stssaguenay.R;
20 22
 import com.rthoni.stssaguenay.business.RoutesBusiness;
21 23
 import com.rthoni.stssaguenay.business.STSBusiness;
@@ -162,7 +164,7 @@ public class StopViewerFragment extends Fragment {
162 164
         progressDialog.setMessage(getString(R.string.loading_routes));
163 165
 
164 166
         RoutesBusiness.getAll(STSBusiness.getConfig(getContext()))
165
-                .then(new LuPromise.LuConsumer<List<RoutesDbo>>() {
167
+                .then(new LuConsumer<List<RoutesDbo>>() {
166 168
                     @Override
167 169
                     public void execute(List<RoutesDbo> data) {
168 170
                         progressDialog.dismiss();
@@ -170,9 +172,9 @@ public class StopViewerFragment extends Fragment {
170 172
                         _adapter.setRoutes(routes);
171 173
                         loadSchedules();
172 174
                     }
173
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
175
+                }, new LuConsumer<LuPromiseError>() {
174 176
                     @Override
175
-                    public void execute(LuPromise.LuPromiseError data) {
177
+                    public void execute(LuPromiseError data) {
176 178
                         progressDialog.dismiss();
177 179
                         _adapter.setRoutes(new Vector<RoutesDbo>());
178 180
                         Toast.makeText(getContext(), data.getError(), Toast.LENGTH_LONG).show();
@@ -200,15 +202,15 @@ public class StopViewerFragment extends Fragment {
200 202
         LocalDateTime date = LocalDateTime.now(dtz).plusMinutes(-30);
201 203
 
202 204
         SchedulesBusiness.getMultiple(STSBusiness.getConfig(getContext()), favouriteStopsDbos, date, 20)
203
-                .then(new LuPromise.LuConsumer<List<SchedulesDbo>>() {
205
+                .then(new LuConsumer<List<SchedulesDbo>>() {
204 206
                     @Override
205 207
                     public void execute(List<SchedulesDbo> data) {
206 208
                         progressDialog.dismiss();
207 209
                         _adapter.setSchedules(data);
208 210
                     }
209
-                }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
211
+                }, new LuConsumer<LuPromiseError>() {
210 212
                     @Override
211
-                    public void execute(LuPromise.LuPromiseError data) {
213
+                    public void execute(LuPromiseError data) {
212 214
                         progressDialog.dismiss();
213 215
 //                        _routesAdapter.setRoutes(new Vector<RoutesDbo>()); TODO
214 216
                         Toast.makeText(getContext(), data.getError(), Toast.LENGTH_LONG).show();

+ 9
- 0
luticateutils/src/main/java/com/luticate/utils/business/LuConsumer.java View File

@@ -0,0 +1,9 @@
1
+package com.luticate.utils.business;
2
+
3
+/**
4
+ * Created by robin on 10/22/16.
5
+ */
6
+
7
+public interface LuConsumer<T> {
8
+    void execute(T data);
9
+}

+ 9
- 0
luticateutils/src/main/java/com/luticate/utils/business/LuConverter.java View File

@@ -0,0 +1,9 @@
1
+package com.luticate.utils.business;
2
+
3
+/**
4
+ * Created by robin on 10/22/16.
5
+ */
6
+
7
+public interface LuConverter<T, T2> {
8
+    T2 convert(T data);
9
+}

+ 55
- 76
luticateutils/src/main/java/com/luticate/utils/business/LuPromise.java View File

@@ -1,118 +1,89 @@
1 1
 package com.luticate.utils.business;
2 2
 
3
+import com.luticate.utils.dbo.LuPromiseError;
4
+
5
+import java.util.List;
6
+import java.util.Vector;
7
+
3 8
 /**
4 9
  *
5 10
  * Created by robin on 11/27/15.
6 11
  */
7 12
 public class LuPromise<T> {
8 13
 
9
-    public interface LuConsumer<T> {
10
-        void execute(T data);
11
-    }
12
-
13
-    public interface LuConverter<T, T2> {
14
-        T2 convert(T data);
14
+    public enum LuPromiseStatus {
15
+        Running,
16
+        Resolved,
17
+        Failed
15 18
     }
16 19
 
17
-    public static class LuPromiseError {
20
+    private List<LuConsumer<T>> _onSuccess = new Vector<>();
18 21
 
19
-        public LuPromiseError()
20
-        {
22
+    private List<LuConsumer<LuPromiseError>> _onFailed = new Vector<>();
21 23
 
22
-        }
24
+    protected LuPromiseStatus _status = LuPromiseStatus.Running;
23 25
 
24
-        public LuPromiseError(String error, int statusCode)
25
-        {
26
-            _error = error;
27
-            _statusCode = statusCode;
28
-        }
26
+    protected T _data = null;
29 27
 
30
-        public String getError() {
31
-            return _error;
32
-        }
28
+    protected LuPromiseError _error = null;
33 29
 
34
-        public void setError(String error) {
35
-            _error = error;
36
-        }
37
-
38
-        public int getStatusCode() {
39
-            return _statusCode;
40
-        }
41
-
42
-        public void setStatusCode(int statusCode) {
43
-            _statusCode = statusCode;
44
-        }
45
-
46
-        private String _error;
47
-
48
-        private int _statusCode;
49
-
50
-        @Override
51
-        public String toString() {
52
-            return _error + " (HTTP Code : " + _statusCode + ")";
53
-        }
30
+    public LuPromiseStatus getStatus()
31
+    {
32
+        return _status;
54 33
     }
55 34
 
56
-    public enum LuPromiseStatus {
57
-        Running,
58
-        Resolved,
59
-        Failed
35
+    public T getData()
36
+    {
37
+        return _data;
60 38
     }
61 39
 
62
-    private LuConsumer<T> _onSuccess = new LuConsumer<T>() {
63
-        @Override
64
-        public void execute(T data) {
65
-        }
66
-    };
67
-
68
-    private LuConsumer<LuPromiseError> _onFailed = new LuConsumer<LuPromiseError>() {
69
-        @Override
70
-        public void execute(LuPromiseError data) {
71
-        }
72
-    };
73
-
74
-    private LuPromiseStatus _status = LuPromiseStatus.Running;
75
-
76
-    private T _data = null;
77
-
78
-    private LuPromiseError _error = null;
40
+    public LuPromiseError getError()
41
+    {
42
+        return _error;
43
+    }
79 44
 
80 45
     public LuPromise<T> then(LuConsumer<T> onSuccess, LuConsumer<LuPromiseError> onFailed)
81 46
     {
82
-        _onFailed = onFailed;
47
+        _onFailed.add(onFailed);
83 48
         if (_status == LuPromiseStatus.Failed) {
84
-            _onFailed.execute(_error);
49
+            if (onFailed != null) {
50
+                onFailed.execute(_error);
51
+            }
85 52
         }
86 53
         return then(onSuccess);
87 54
     }
88 55
 
89 56
     public LuPromise<T> then(LuConsumer<T> onSuccess)
90 57
     {
91
-        _onSuccess = onSuccess;
58
+        _onSuccess.add(onSuccess);
92 59
         if (_status == LuPromiseStatus.Resolved) {
93
-            _onSuccess.execute(_data);
60
+            if (onSuccess != null) {
61
+                onSuccess.execute(_data);
62
+            }
94 63
         }
95 64
         return this;
96 65
     }
97 66
 
98
-    public void resolve(T data)
67
+    public LuPromise<T> resolve(T data)
99 68
     {
100 69
         if (_status == LuPromiseStatus.Running) {
101 70
             _data = data;
102 71
             _error = null;
103 72
             _status = LuPromiseStatus.Resolved;
104
-            _onSuccess.execute(_data);
73
+            onSuccess();
105 74
         }
75
+        return this;
106 76
     }
107 77
 
108
-    public void reject(LuPromiseError error)
78
+    public LuPromise<T> reject(LuPromiseError error)
109 79
     {
110 80
         if (_status == LuPromiseStatus.Running) {
111 81
             _data = null;
112 82
             _error = error;
113 83
             _status = LuPromiseStatus.Failed;
114
-            _onFailed.execute(_error);
84
+            onFailed();
115 85
         }
86
+        return this;
116 87
     }
117 88
 
118 89
     public <T2> LuPromise<T2> map(final LuConverter<T, T2> converter)
@@ -123,16 +94,11 @@ public class LuPromise<T> {
123 94
             public void execute(T data) {
124 95
                 promise.resolve(converter.convert(data));
125 96
             }
126
-        }, new LuConsumer<LuPromiseError>() {
127
-            @Override
128
-            public void execute(LuPromiseError error) {
129
-                promise.reject(error);
130
-            }
131
-        });
97
+        }, getRejectConsumer());
132 98
         return promise;
133 99
     }
134 100
 
135
-    public LuConsumer<LuPromiseError> rejectConsumer()
101
+    public LuConsumer<LuPromiseError> getRejectConsumer()
136 102
     {
137 103
         return new LuConsumer<LuPromiseError>() {
138 104
             @Override
@@ -142,8 +108,21 @@ public class LuPromise<T> {
142 108
         };
143 109
     }
144 110
 
145
-    public LuPromiseStatus getStatus()
111
+    protected void onSuccess()
146 112
     {
147
-        return _status;
113
+        for (LuConsumer<T> c : _onSuccess) {
114
+            if (c != null) {
115
+                c.execute(_data);
116
+            }
117
+        }
118
+    }
119
+
120
+    protected void onFailed()
121
+    {
122
+        for (LuConsumer<LuPromiseError> c : _onFailed) {
123
+            if (c != null) {
124
+                c.execute(_error);
125
+            }
126
+        }
148 127
     }
149 128
 }

+ 8
- 7
luticateutils/src/main/java/com/luticate/utils/dataaccess/LuRequest.java View File

@@ -13,6 +13,7 @@ import com.android.volley.toolbox.Volley;
13 13
 import com.luticate.utils.business.LuPromise;
14 14
 import com.luticate.utils.dbo.LuDataAccessConfigDbo;
15 15
 import com.luticate.utils.dbo.LuDbo;
16
+import com.luticate.utils.dbo.LuPromiseError;
16 17
 
17 18
 import org.json.JSONObject;
18 19
 
@@ -55,11 +56,11 @@ public class LuRequest {
55 56
                     } catch (Exception e)
56 57
                     {
57 58
                         e.printStackTrace();
58
-                        promise.reject(new LuPromise.LuPromiseError("Failed to parse success server response", 200));
59
+                        promise.reject(new LuPromiseError("Failed to parse success server response", 200));
59 60
                     }
60 61
                 } catch (Exception e) {
61 62
                     e.printStackTrace();
62
-                    promise.reject(new LuPromise.LuPromiseError("Failed to initialize server response", 200));
63
+                    promise.reject(new LuPromiseError("Failed to initialize server response", 200));
63 64
                 }
64 65
             }
65 66
         };
@@ -78,23 +79,23 @@ public class LuRequest {
78 79
                         {
79 80
                             code = error.networkResponse.statusCode;
80 81
                             JSONObject data = new JSONObject(new String(error.networkResponse.data));
81
-                            promise.reject(new LuPromise.LuPromiseError(data.getString("Message"), code));
82
+                            promise.reject(new LuPromiseError(data.getString("Message"), code));
82 83
                         }
83 84
                         else {
84 85
                             if (error.getCause() != null) {
85
-                                promise.reject(new LuPromise.LuPromiseError(error.getCause().getMessage(), code));
86
+                                promise.reject(new LuPromiseError(error.getCause().getMessage(), code));
86 87
                             }
87 88
                             else {
88
-                                promise.reject(new LuPromise.LuPromiseError(error.toString(), code));
89
+                                promise.reject(new LuPromiseError(error.toString(), code));
89 90
                             }
90 91
                         }
91 92
                     }
92 93
                     else {
93
-                        promise.reject(new LuPromise.LuPromiseError("Unknown network error", code));
94
+                        promise.reject(new LuPromiseError("Unknown network error", code));
94 95
                     }
95 96
                 } catch (Exception e)
96 97
                 {
97
-                    promise.reject(new LuPromise.LuPromiseError(e.getMessage(), code));
98
+                    promise.reject(new LuPromiseError(e.getMessage(), code));
98 99
                 }
99 100
             }
100 101
         };

+ 44
- 0
luticateutils/src/main/java/com/luticate/utils/dbo/LuPromiseError.java View File

@@ -0,0 +1,44 @@
1
+package com.luticate.utils.dbo;
2
+
3
+/**
4
+ * Created by robin on 10/22/16.
5
+ */
6
+
7
+public class LuPromiseError {
8
+
9
+    private String _error;
10
+
11
+    private int _statusCode;
12
+
13
+    public LuPromiseError()
14
+    {
15
+    }
16
+
17
+    public LuPromiseError(String error, int statusCode)
18
+    {
19
+        _error = error;
20
+        _statusCode = statusCode;
21
+    }
22
+
23
+    public String getError() {
24
+        return _error;
25
+    }
26
+
27
+    public void setError(String error) {
28
+        _error = error;
29
+    }
30
+
31
+    public int getStatusCode() {
32
+        return _statusCode;
33
+    }
34
+
35
+    public void setStatusCode(int statusCode) {
36
+        _statusCode = statusCode;
37
+    }
38
+
39
+    @Override
40
+    public String toString() {
41
+        return _error + " (Status code : " + _statusCode + ")";
42
+    }
43
+
44
+}

+ 6
- 4
luticateutils/src/main/java/com/luticate/utils/ui/fragments/AbstractPaginationFragment.java View File

@@ -9,9 +9,11 @@ import android.view.LayoutInflater;
9 9
 import android.view.View;
10 10
 import android.view.ViewGroup;
11 11
 
12
+import com.luticate.utils.business.LuConsumer;
12 13
 import com.luticate.utils.business.LuPromise;
13 14
 import com.luticate.utils.dbo.LuDbo;
14 15
 import com.luticate.utils.dbo.LuPaginatedDbo;
16
+import com.luticate.utils.dbo.LuPromiseError;
15 17
 import com.luticate.utils.ui.views.AbstractPaginationView;
16 18
 
17 19
 import java.util.Vector;
@@ -42,7 +44,7 @@ public abstract class AbstractPaginationFragment<Dbo extends LuDbo> extends Frag
42 44
         super.onStart();
43 45
         View v = getView();
44 46
         AbstractPaginationView paginationView = (AbstractPaginationView) v.findViewById(getPaginationViewId());
45
-        paginationView.setOnPageChanged(new LuPromise.LuConsumer<Integer>() {
47
+        paginationView.setOnPageChanged(new LuConsumer<Integer>() {
46 48
             @Override
47 49
             public void execute(Integer page) {
48 50
                 loadPage(page);
@@ -106,7 +108,7 @@ public abstract class AbstractPaginationFragment<Dbo extends LuDbo> extends Frag
106 108
         if (_items != null) {
107 109
             _items.setData(new Vector<Dbo>());
108 110
         }
109
-        getLoadPagePromise(page, _perPage, _query).then(new LuPromise.LuConsumer<LuPaginatedDbo<Dbo>>() {
111
+        getLoadPagePromise(page, _perPage, _query).then(new LuConsumer<LuPaginatedDbo<Dbo>>() {
110 112
             @Override
111 113
             public void execute(LuPaginatedDbo<Dbo> items) {
112 114
                 _items = items;
@@ -118,9 +120,9 @@ public abstract class AbstractPaginationFragment<Dbo extends LuDbo> extends Frag
118 120
                 onPageChanged();
119 121
                 showProgress(false);
120 122
             }
121
-        }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
123
+        }, new LuConsumer<LuPromiseError>() {
122 124
             @Override
123
-            public void execute(LuPromise.LuPromiseError error) {
125
+            public void execute(LuPromiseError error) {
124 126
 
125 127
                 showProgress(false);
126 128
             }

+ 3
- 2
luticateutils/src/main/java/com/luticate/utils/ui/views/AbstractPaginationView.java View File

@@ -4,6 +4,7 @@ import android.content.Context;
4 4
 import android.util.AttributeSet;
5 5
 import android.widget.LinearLayout;
6 6
 
7
+import com.luticate.utils.business.LuConsumer;
7 8
 import com.luticate.utils.business.LuPromise;
8 9
 
9 10
 import java.util.List;
@@ -14,7 +15,7 @@ import java.util.Vector;
14 15
  */
15 16
 public abstract class AbstractPaginationView extends LinearLayout {
16 17
 
17
-    private LuPromise.LuConsumer<Integer> _onPageChanged = null;
18
+    private LuConsumer<Integer> _onPageChanged = null;
18 19
 
19 20
     private int _page = 0;
20 21
 
@@ -101,7 +102,7 @@ public abstract class AbstractPaginationView extends LinearLayout {
101 102
         return isInEditMode() ? 24 : _page;
102 103
     }
103 104
 
104
-    public void setOnPageChanged(LuPromise.LuConsumer<Integer> onPageChanged) {
105
+    public void setOnPageChanged(LuConsumer<Integer> onPageChanged) {
105 106
         _onPageChanged = onPageChanged;
106 107
     }
107 108
 

+ 181
- 0
luticateutils/src/test/java/com/luticate/utils/PromiseTest.java View File

@@ -0,0 +1,181 @@
1
+package com.luticate.utils;
2
+
3
+import com.luticate.utils.business.LuConsumer;
4
+import com.luticate.utils.business.LuConverter;
5
+import com.luticate.utils.business.LuPromise;
6
+import com.luticate.utils.dbo.LuPromiseError;
7
+import com.luticate.utils.dbo.LuVoidDbo;
8
+
9
+import org.junit.Test;
10
+
11
+import static org.junit.Assert.*;
12
+
13
+/**
14
+ * Created by robin on 10/22/16.
15
+ */
16
+
17
+public class PromiseTest {
18
+
19
+    @Test
20
+    public void resolveTest()
21
+    {
22
+        LuPromise<Integer> promise = new LuPromise<>();
23
+        final int[] results = new int[]{42, 24, 4242};
24
+
25
+        promise.then(new LuConsumer<Integer>() {
26
+            @Override
27
+            public void execute(Integer data) {
28
+                assertEquals(42, results[0]);
29
+                assertEquals(24, results[1]);
30
+                assertEquals(4242, results[2]);
31
+                ++results[0];
32
+            }
33
+        }, new LuConsumer<LuPromiseError>() {
34
+            @Override
35
+            public void execute(LuPromiseError data) {
36
+                assertEquals(42, results[0]);
37
+                assertEquals(24, results[1]);
38
+                assertEquals(4242, results[2]);
39
+                --results[0];
40
+            }
41
+        }).then(new LuConsumer<Integer>() {
42
+            @Override
43
+            public void execute(Integer data) {
44
+                assertEquals(43, results[0]);
45
+                assertEquals(24, results[1]);
46
+                assertEquals(4242, results[2]);
47
+                ++results[1];
48
+            }
49
+        }, new LuConsumer<LuPromiseError>() {
50
+            @Override
51
+            public void execute(LuPromiseError data) {
52
+                assertEquals(41, results[0]);
53
+                assertEquals(24, results[1]);
54
+                assertEquals(4242, results[2]);
55
+                --results[1];
56
+            }
57
+        });
58
+        assertEquals(42, results[0]);
59
+        assertEquals(24, results[1]);
60
+        assertEquals(4242, results[2]);
61
+        assertEquals(LuPromise.LuPromiseStatus.Running, promise.getStatus());
62
+        assertNull(promise.getData());
63
+
64
+        promise.resolve(4224).then(new LuConsumer<Integer>() {
65
+            @Override
66
+            public void execute(Integer data) {
67
+                assertEquals(43, results[0]);
68
+                assertEquals(25, results[1]);
69
+                assertEquals(4242, results[2]);
70
+                ++results[2];
71
+            }
72
+        }, new LuConsumer<LuPromiseError>() {
73
+            @Override
74
+            public void execute(LuPromiseError data) {
75
+                assertEquals(41, results[0]);
76
+                assertEquals(23, results[1]);
77
+                assertEquals(4242, results[2]);
78
+                --results[2];
79
+            }
80
+        });
81
+        assertEquals(43, results[0]);
82
+        assertEquals(25, results[1]);
83
+        assertEquals(4243, results[2]);
84
+        assertEquals(LuPromise.LuPromiseStatus.Resolved, promise.getStatus());
85
+        assertEquals(4224, promise.getData().intValue());
86
+    }
87
+
88
+    @Test
89
+    public void rejectTest()
90
+    {
91
+        LuPromise<Integer> promise = new LuPromise<>();
92
+        final int[] results = new int[]{42, 24, 4242};
93
+
94
+        promise.then(new LuConsumer<Integer>() {
95
+            @Override
96
+            public void execute(Integer data) {
97
+                assertEquals(42, results[0]);
98
+                assertEquals(24, results[1]);
99
+                assertEquals(4242, results[2]);
100
+                ++results[0];
101
+            }
102
+        }, new LuConsumer<LuPromiseError>() {
103
+            @Override
104
+            public void execute(LuPromiseError data) {
105
+                assertEquals(42, results[0]);
106
+                assertEquals(24, results[1]);
107
+                assertEquals(4242, results[2]);
108
+                --results[0];
109
+            }
110
+        }).then(new LuConsumer<Integer>() {
111
+            @Override
112
+            public void execute(Integer data) {
113
+                assertEquals(43, results[0]);
114
+                assertEquals(24, results[1]);
115
+                assertEquals(4242, results[2]);
116
+                ++results[1];
117
+            }
118
+        }, new LuConsumer<LuPromiseError>() {
119
+            @Override
120
+            public void execute(LuPromiseError data) {
121
+                assertEquals(41, results[0]);
122
+                assertEquals(24, results[1]);
123
+                assertEquals(4242, results[2]);
124
+                --results[1];
125
+            }
126
+        });
127
+        assertEquals(42, results[0]);
128
+        assertEquals(24, results[1]);
129
+        assertEquals(4242, results[2]);
130
+        assertEquals(LuPromise.LuPromiseStatus.Running, promise.getStatus());
131
+        assertNull(promise.getData());
132
+
133
+        promise.reject(null).then(new LuConsumer<Integer>() {
134
+            @Override
135
+            public void execute(Integer data) {
136
+                assertEquals(43, results[0]);
137
+                assertEquals(25, results[1]);
138
+                assertEquals(4242, results[2]);
139
+                ++results[2];
140
+            }
141
+        }, new LuConsumer<LuPromiseError>() {
142
+            @Override
143
+            public void execute(LuPromiseError data) {
144
+                assertEquals(41, results[0]);
145
+                assertEquals(23, results[1]);
146
+                assertEquals(4242, results[2]);
147
+                --results[2];
148
+            }
149
+        });
150
+        assertEquals(41, results[0]);
151
+        assertEquals(23, results[1]);
152
+        assertEquals(4241, results[2]);
153
+        assertEquals(LuPromise.LuPromiseStatus.Failed, promise.getStatus());
154
+        assertNull(promise.getData());
155
+    }
156
+
157
+    @Test
158
+    public void mapTest()
159
+    {
160
+        LuPromise<Integer> promise = new LuPromise<>();
161
+        final int[] result = new int[1];
162
+        promise.map(new LuConverter<Integer, Boolean>() {
163
+            @Override
164
+            public Boolean convert(Integer data) {
165
+                return data == 42;
166
+            }
167
+        }).then(new LuConsumer<Boolean>() {
168
+            @Override
169
+            public void execute(Boolean data) {
170
+                result[0] = data ? 4242 : 2424;
171
+            }
172
+        }, new LuConsumer<LuPromiseError>() {
173
+            @Override
174
+            public void execute(LuPromiseError data) {
175
+                result[0] = 2442;
176
+            }
177
+        });
178
+        promise.resolve(42);
179
+        assertEquals(result[0], 4242);
180
+    }
181
+}

Loading…
Cancel
Save