Skip to content

Commit 4872b06

Browse files
author
Bartosz Litwiniuk
committed
Merge branch 'release-candidate/3.7.8' into release-3.7.10
# Conflicts: # CHANGELOG.md
2 parents 28989c4 + 44ec45b commit 4872b06

File tree

58 files changed

+1984
-121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1984
-121
lines changed

.github/workflows/test.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ jobs:
2929

3030
- name: Write to local.properties
3131
run: |
32-
echo BACKTRACE_SUBMISSION_URL=\"https://submit.backtrace.io/yolo/2dd86e8e779d1fc7e22e7b19a9489abeedec3b1426abe7e2209888e92362fba4/json\" > ./local.properties
32+
echo BACKTRACE_SUBMISSION_URL=\"${{ secrets.BACKTRACE_SUBMISSION_URL }}\" >> ./local.properties
33+
echo BACKTRACE_CORONER_URL=\"${{ secrets.BACKTRACE_CORONER_URL }}\" >> ./local.properties
34+
echo BACKTRACE_CORONER_TOKEN=\"${{ secrets.BACKTRACE_CORONER_TOKEN }}\" >> ./local.properties
3335
3436
- name: Build and check
3537
run: ./gradlew assembleDebug assembleDebugAndroidTest build check

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Backtrace Android Release Notes
22

3+
## Version 3.7.10
4+
- Add integration tests
5+
- Move common http response processing method to helper class
6+
- Remove unused code
7+
- Add abstraction to gson serialization
8+
- Improve example-app Main Activity to work in same way on different Android versions
9+
310
## Version 3.7.9
411

512
- Fixed problem when thread is trying to delete already deleted record from db context

backtrace-library/src/androidTest/java/backtraceio/library/BacktraceClientSendTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@ public BacktraceResult onRequest(BacktraceData data) {
297297
};
298298
backtraceClient.setOnRequestHandler(rh);
299299

300-
301300
//WHEN
302301
for (final String message : messages) {
303302
backtraceClient.send(new Exception(message), new OnServerResponseEventListener() {
@@ -318,4 +317,4 @@ public void onEvent(BacktraceResult backtraceResult) {
318317
fail(ex.getMessage());
319318
}
320319
}
321-
}
320+
}

backtrace-library/src/main/java/backtraceio/library/common/BacktraceSerializeHelper.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,34 @@
44
import com.google.gson.Gson;
55
import com.google.gson.GsonBuilder;
66

7+
import backtraceio.library.common.serialization.BacktraceGsonBuilder;
78
import backtraceio.library.models.BacktraceResult;
89

910
/**
1011
* Helper class for serialize and deserialize objects
1112
*/
1213
public class BacktraceSerializeHelper {
1314

14-
/**
15-
* Deserialize JSON into BacktraceResult object
16-
*
17-
* @param json JSON string which will be deserialized
18-
* @return object created during deserialization of given json string
19-
*/
20-
public static BacktraceResult backtraceResultFromJson(String json) {
21-
return new Gson().fromJson(json, BacktraceResult.class);
22-
}
23-
2415
/**
2516
* Serialize given object to JSON string
2617
*
2718
* @param object object which will be serialized
2819
* @return serialized object in JSON string format
2920
*/
3021
public static String toJson(Object object) {
31-
Gson gson = buildGson();
32-
return gson.toJson(object);
22+
return BacktraceSerializeHelper.toJson(new BacktraceGsonBuilder().buildGson(), object);
3323
}
3424

3525
public static <T> T fromJson(String json, Class<T> type) {
36-
Gson gson = buildGson();
37-
return gson.fromJson(json, type);
26+
return BacktraceSerializeHelper.fromJson(new BacktraceGsonBuilder().buildGson(), json, type);
27+
}
28+
29+
public static String toJson(Gson gson, Object object) {
30+
return gson.toJson(object);
3831
}
3932

40-
private static Gson buildGson() {
41-
return new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
33+
public static <T> T fromJson(Gson gson, String json, Class<T> type) {
34+
return gson.fromJson(json, type);
4235
}
36+
4337
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package backtraceio.library.common.serialization;
2+
3+
import com.google.gson.FieldNamingPolicy;
4+
import com.google.gson.Gson;
5+
import com.google.gson.GsonBuilder;
6+
7+
public class BacktraceGsonBuilder implements CustomGsonBuilder {
8+
9+
@Override
10+
public Gson buildGson() {
11+
return new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
12+
}
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package backtraceio.library.common.serialization;
2+
3+
import com.google.gson.Gson;
4+
5+
public interface CustomGsonBuilder {
6+
Gson buildGson();
7+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package backtraceio.library.http;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStream;
6+
import java.io.InputStreamReader;
7+
import java.net.HttpURLConnection;
8+
9+
import backtraceio.library.logger.BacktraceLogger;
10+
11+
public class HttpHelper {
12+
private static final String LOG_TAG = HttpHelper.class.getSimpleName();
13+
14+
/**
15+
* Read response message from HTTP response
16+
*
17+
* @param urlConnection current HTTP connection
18+
* @return response from HTTP request
19+
* @throws IOException
20+
*/
21+
public static String getResponseMessage(HttpURLConnection urlConnection) throws IOException {
22+
BacktraceLogger.d(LOG_TAG, "Reading response from HTTP request");
23+
24+
InputStream inputStream;
25+
if (urlConnection.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) {
26+
inputStream = urlConnection.getInputStream();
27+
} else {
28+
inputStream = urlConnection.getErrorStream();
29+
}
30+
31+
BufferedReader br = new BufferedReader(new InputStreamReader(
32+
inputStream));
33+
34+
StringBuilder responseStringBuilder = new StringBuilder();
35+
String line;
36+
while ((line = br.readLine()) != null) {
37+
responseStringBuilder.append(line);
38+
}
39+
br.close();
40+
return responseStringBuilder.toString();
41+
}
42+
}

backtrace-library/src/main/java/backtraceio/library/services/BacktraceApi.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,6 @@ public class BacktraceApi implements Api {
2626
*/
2727
private final String reportSubmissionUrl;
2828

29-
/**
30-
* URL to unique events endpoint
31-
*/
32-
private String uniqueEventsSubmissionUrl;
33-
34-
/**
35-
* URL to summed events endpoint
36-
*/
37-
private String summedEventsSubmissionUrl;
38-
3929
/**
4030
* Event triggered when server respond with error
4131
*/

backtrace-library/src/main/java/backtraceio/library/services/BacktraceReportSender.java

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package backtraceio.library.services;
22

3-
import java.io.BufferedReader;
43
import java.io.DataOutputStream;
5-
import java.io.IOException;
6-
import java.io.InputStream;
7-
import java.io.InputStreamReader;
84
import java.net.HttpURLConnection;
95
import java.net.URL;
106
import java.util.List;
@@ -14,6 +10,7 @@
1410
import backtraceio.library.common.MultiFormRequestHelper;
1511
import backtraceio.library.common.RequestHelper;
1612
import backtraceio.library.events.OnServerErrorEventListener;
13+
import backtraceio.library.http.HttpHelper;
1714
import backtraceio.library.logger.BacktraceLogger;
1815
import backtraceio.library.models.BacktraceResult;
1916
import backtraceio.library.models.json.BacktraceReport;
@@ -76,12 +73,12 @@ static BacktraceResult sendReport(String serverUrl, String json, List<String> at
7673
BacktraceLogger.d(LOG_TAG, "Received response status from Backtrace API for HTTP request is: " + statusCode);
7774

7875
if (statusCode == HttpURLConnection.HTTP_OK) {
79-
result = BacktraceSerializeHelper.backtraceResultFromJson(
80-
getResponse(urlConnection)
76+
result = BacktraceSerializeHelper.fromJson(
77+
HttpHelper.getResponseMessage(urlConnection), BacktraceResult.class
8178
);
8279
result.setBacktraceReport(report);
8380
} else {
84-
String message = getResponse(urlConnection);
81+
String message = HttpHelper.getResponseMessage(urlConnection);
8582
message = (BacktraceStringHelper.isNullOrEmpty(message)) ?
8683
urlConnection.getResponseMessage() : message;
8784
throw new HttpException(statusCode, String.format("%s: %s", statusCode, message));
@@ -150,7 +147,7 @@ public static EventsResult sendEvents(String serverUrl, String json, EventsPaylo
150147
if (statusCode == HttpURLConnection.HTTP_OK) {
151148
result = new EventsResult(payload, urlConnection.getResponseMessage(), BacktraceResultStatus.Ok, statusCode);
152149
} else {
153-
String message = getResponse(urlConnection);
150+
String message = HttpHelper.getResponseMessage(urlConnection);
154151
message = (BacktraceStringHelper.isNullOrEmpty(message)) ?
155152
urlConnection.getResponseMessage() : message;
156153
throw new HttpException(statusCode, String.format("%s: %s", statusCode, message));
@@ -176,33 +173,4 @@ public static EventsResult sendEvents(String serverUrl, String json, EventsPaylo
176173
}
177174
return result;
178175
}
179-
180-
/**
181-
* Read response message from HTTP response
182-
*
183-
* @param urlConnection current HTTP connection
184-
* @return response from HTTP request
185-
* @throws IOException
186-
*/
187-
private static String getResponse(HttpURLConnection urlConnection) throws IOException {
188-
BacktraceLogger.d(LOG_TAG, "Reading response from HTTP request");
189-
190-
InputStream inputStream;
191-
if (urlConnection.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) {
192-
inputStream = urlConnection.getInputStream();
193-
} else {
194-
inputStream = urlConnection.getErrorStream();
195-
}
196-
197-
BufferedReader br = new BufferedReader(new InputStreamReader(
198-
inputStream));
199-
200-
StringBuilder responseSB = new StringBuilder();
201-
String line;
202-
while ((line = br.readLine()) != null) {
203-
responseSB.append(line);
204-
}
205-
br.close();
206-
return responseSB.toString();
207-
}
208176
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package backtraceio.library;
2+
3+
import static junit.framework.TestCase.assertEquals;
4+
import static junit.framework.TestCase.assertNotNull;
5+
import static junit.framework.TestCase.assertNull;
6+
7+
import junit.framework.Assert;
8+
9+
import org.junit.Test;
10+
11+
import backtraceio.library.common.BacktraceSerializeHelper;
12+
import backtraceio.library.models.BacktraceResult;
13+
import backtraceio.library.models.json.BacktraceReport;
14+
import backtraceio.library.models.types.BacktraceResultStatus;
15+
16+
public class BacktraceSerializeHelperTest {
17+
@Test
18+
public void testSerialization() {
19+
// GIVEN
20+
BacktraceResult backtraceResult = new BacktraceResult(null, "result-message", BacktraceResultStatus.Ok);
21+
// WHEN
22+
String json = BacktraceSerializeHelper.toJson(backtraceResult);
23+
// THEN
24+
assertEquals("{\"message\":\"result-message\",\"status\":\"Ok\"}", json);
25+
}
26+
27+
@Test
28+
public void testDeserialization() {
29+
// GIVEN
30+
String json = "{\"_rxid\": \"12345\", \"message\":\"result-message\",\"status\":\"Ok\"}";
31+
32+
// WHEN
33+
BacktraceResult result = BacktraceSerializeHelper.fromJson(json ,BacktraceResult.class);
34+
35+
// THEN
36+
assertNotNull(result);
37+
assertEquals("result-message", result.message);
38+
assertEquals("12345", result.rxId);
39+
assertEquals(BacktraceResultStatus.Ok, result.status);
40+
assertNull(result.getBacktraceReport());
41+
}
42+
}

0 commit comments

Comments
 (0)