Skip to content

Commit e017f1c

Browse files
committed
Use Moshi instead of Jackson
1 parent b78f6b5 commit e017f1c

6 files changed

Lines changed: 75 additions & 13 deletions

File tree

.idea/dictionaries/Simone.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ dependencies {
7373
annotationProcessor "com.google.dagger:dagger-compiler:$versions.dagger"
7474

7575
// Retrofit
76-
implementation "com.squareup.retrofit2:converter-jackson:$versions.retrofit"
76+
implementation "com.squareup.retrofit2:converter-moshi:$versions.retrofit"
7777
implementation "com.squareup.retrofit2:retrofit:$versions.retrofit"
7878
implementation "com.squareup.okhttp3:logging-interceptor:$versions.okhttpLog"
7979

app/src/main/java/com/simonesestito/shopsqueue/Constants.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,21 @@
2222

2323
@SuppressWarnings("WeakerAccess")
2424
public class Constants {
25-
public static final String API_BASE_URL = BuildConfig.DEBUG
26-
? Build.PRODUCT.equals("sdk") ? "http://10.0.2.2:1234" : "http://192.168.1.100:1234"
27-
: "https://shopsqueue.simonesestito.com";
25+
public static final boolean IS_EMULATOR = Build.PRODUCT.equals("sdk");
26+
public static final String API_BASE_URL = getApiBaseUrl();
2827
public static final String SHARED_PREFERENCES_FILE = BuildConfig.APPLICATION_ID + "_preferences";
2928
public static final String SHARED_PREFERENCES_TOKEN_KEY = "api_access_token";
3029
public static final int COORDINATES_DIGITS_PRECISION = 6;
3130
public static final String APK_DOWNLOAD_URL = "https://firebasestorage.googleapis.com/v0/b/shops-queue.appspot.com/o/app.apk?alt=media";
3231
public static final String GITHUB_REPO_URL = "https://github.com/simonesestito/shops-queue-android";
32+
33+
34+
private static String getApiBaseUrl() {
35+
if (!BuildConfig.DEBUG)
36+
return "https://shopsqueue.simonesestito.com";
37+
else if (IS_EMULATOR)
38+
return "http://10.0.2.2:1234";
39+
else
40+
return "http://192.168.1.100:1234";
41+
}
3342
}

app/src/main/java/com/simonesestito/shopsqueue/FcmReceiverService.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,14 @@
3131
import androidx.core.app.NotificationCompat;
3232
import androidx.core.content.ContextCompat;
3333

34-
import com.fasterxml.jackson.core.JsonProcessingException;
35-
import com.fasterxml.jackson.databind.ObjectMapper;
3634
import com.google.firebase.messaging.FirebaseMessagingService;
3735
import com.google.firebase.messaging.RemoteMessage;
3836
import com.simonesestito.shopsqueue.api.dto.Booking;
3937
import com.simonesestito.shopsqueue.api.dto.BookingWithCount;
4038
import com.simonesestito.shopsqueue.api.dto.FcmToken;
4139
import com.simonesestito.shopsqueue.api.service.FcmService;
4240
import com.simonesestito.shopsqueue.ui.MainActivity;
41+
import com.squareup.moshi.Moshi;
4342

4443
import java.util.Map;
4544

@@ -151,11 +150,13 @@ private <T> T parseJson(String json, Class<T> clazz) {
151150
if (json == null || json.isEmpty())
152151
return null;
153152

154-
ObjectMapper objectMapper = new ObjectMapper();
155153
try {
156-
return objectMapper.readerFor(clazz).readValue(json);
157-
} catch (JsonProcessingException e) {
158-
e.printStackTrace();
154+
return new Moshi.Builder()
155+
.build()
156+
.adapter(clazz)
157+
.fromJson(json);
158+
} catch (Exception e) {
159+
Log.e("FcmReceiverService", "Unable to read FCM JSON", e);
159160
return null;
160161
}
161162
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Copyright 2020 Simone Sestito
3+
* This file is part of Shops Queue.
4+
*
5+
* Shops Queue is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* Shops Queue is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with Shops Queue. If not, see <http://www.gnu.org/licenses/>.
17+
*/
18+
19+
package com.simonesestito.shopsqueue.api;
20+
21+
import com.squareup.moshi.FromJson;
22+
import com.squareup.moshi.ToJson;
23+
24+
import java.util.Date;
25+
26+
import javax.inject.Inject;
27+
28+
public class DateJsonAdapter {
29+
@Inject
30+
public DateJsonAdapter() {
31+
}
32+
33+
@FromJson
34+
public Date fromJson(long millis) {
35+
return new Date(millis);
36+
}
37+
38+
@ToJson
39+
public long toJson(Date date) {
40+
return date.getTime();
41+
}
42+
}

app/src/main/java/com/simonesestito/shopsqueue/di/module/RetrofitModule.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,22 @@
2121
import com.simonesestito.shopsqueue.BuildConfig;
2222
import com.simonesestito.shopsqueue.api.ApiCallAdapter;
2323
import com.simonesestito.shopsqueue.api.AuthorizationInterceptor;
24+
import com.simonesestito.shopsqueue.api.DateJsonAdapter;
2425
import com.simonesestito.shopsqueue.api.service.BookingService;
2526
import com.simonesestito.shopsqueue.api.service.FavouritesService;
2627
import com.simonesestito.shopsqueue.api.service.FcmService;
2728
import com.simonesestito.shopsqueue.api.service.LoginService;
2829
import com.simonesestito.shopsqueue.api.service.SessionService;
2930
import com.simonesestito.shopsqueue.api.service.ShopService;
3031
import com.simonesestito.shopsqueue.api.service.UserService;
32+
import com.squareup.moshi.Moshi;
3133

3234
import dagger.Module;
3335
import dagger.Provides;
3436
import okhttp3.OkHttpClient;
3537
import okhttp3.logging.HttpLoggingInterceptor;
3638
import retrofit2.Retrofit;
37-
import retrofit2.converter.jackson.JacksonConverterFactory;
39+
import retrofit2.converter.moshi.MoshiConverterFactory;
3840

3941
import static com.simonesestito.shopsqueue.Constants.API_BASE_URL;
4042

@@ -54,10 +56,17 @@ OkHttpClient provideOkHttp(AuthorizationInterceptor authorizationInterceptor) {
5456
}
5557

5658
@Provides
57-
Retrofit provideRetrofit(OkHttpClient okHttpClient) {
59+
Moshi provideMoshi(DateJsonAdapter dateJsonAdapter) {
60+
return new Moshi.Builder()
61+
.add(dateJsonAdapter)
62+
.build();
63+
}
64+
65+
@Provides
66+
Retrofit provideRetrofit(OkHttpClient okHttpClient, Moshi moshi) {
5867
return new Retrofit.Builder()
5968
.client(okHttpClient)
60-
.addConverterFactory(JacksonConverterFactory.create())
69+
.addConverterFactory(MoshiConverterFactory.create(moshi))
6170
.addCallAdapterFactory(new ApiCallAdapter.Factory())
6271
.baseUrl(API_BASE_URL)
6372
.build();

0 commit comments

Comments
 (0)