Skip to content

Commit 5107a5f

Browse files
committed
refac: switch to usage of error codes instead of messages
1 parent 6236f56 commit 5107a5f

File tree

9 files changed

+97
-66
lines changed

9 files changed

+97
-66
lines changed

Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,7 +1985,8 @@ private void sendInstallReferrerI(ReferrerDetails referrerDetails, String referr
19851985
activityState,
19861986
adjustConfig,
19871987
deviceInfo,
1988-
sessionParameters);
1988+
sessionParameters,
1989+
internalState);
19891990

19901991
sdkClickHandler.sendSdkClick(sdkClickPackage);
19911992
}
@@ -2018,7 +2019,8 @@ private void readOpenUrlI(Uri url, long clickTime) {
20182019
activityState,
20192020
adjustConfig,
20202021
deviceInfo,
2021-
sessionParameters);
2022+
sessionParameters,
2023+
internalState);
20222024

20232025
if (sdkClickPackage == null) {
20242026
return;

Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityPackage.java

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
package com.adjust.sdk;
1111

12+
import com.adjust.sdk.network.ErrorCodes;
13+
1214
import java.io.IOException;
1315
import java.io.ObjectInputStream;
1416
import java.io.ObjectOutputStream;
@@ -32,9 +34,9 @@ public class ActivityPackage implements Serializable {
3234
new ObjectStreamField("suffix", String.class),
3335
new ObjectStreamField("callbackParameters", (Class<Map<String,String>>)(Class)Map.class),
3436
new ObjectStreamField("partnerParameters", (Class<Map<String,String>>)(Class)Map.class),
35-
new ObjectStreamField("errorCount", int.class),
36-
new ObjectStreamField("firstErrorMessage", String.class),
37-
new ObjectStreamField("lastErrorMessage", String.class),
37+
new ObjectStreamField("retryCount", int.class),
38+
new ObjectStreamField("firstErrorCode", int.class),
39+
new ObjectStreamField("lastErrorCode", int.class),
3840
new ObjectStreamField("waitBeforeSendTimeSeconds", double.class),
3941
};
4042

@@ -65,9 +67,9 @@ public class ActivityPackage implements Serializable {
6567
private String installVersion;
6668
private Boolean googlePlayInstant;
6769
private Boolean isClick;
68-
private int errorCount;
69-
private String firstErrorMessage;
70-
private String lastErrorMessage;
70+
private int retryCount;
71+
private int firstErrorCode;
72+
private int lastErrorCode;
7173
private double waitBeforeSendTimeSeconds;
7274

7375
public String getPath() {
@@ -234,16 +236,16 @@ public String getFailureMessage() {
234236
return Util.formatString("Failed to track %s%s", activityKind.toString(), suffix);
235237
}
236238

237-
public int getErrorCount() {
238-
return errorCount;
239+
public int getRetryCount() {
240+
return retryCount;
239241
}
240242

241-
public String getFirstErrorMessage() {
242-
return firstErrorMessage;
243+
public int getFirstErrorCode() {
244+
return firstErrorCode;
243245
}
244246

245-
public String getLastErrorMessage() {
246-
return lastErrorMessage;
247+
public int getLastErrorCode() {
248+
return lastErrorCode;
247249
}
248250

249251
public double getWaitBeforeSendTimeSeconds() {
@@ -254,12 +256,12 @@ public void setWaitBeforeSendTimeSeconds(double waitSeconds) {
254256
waitBeforeSendTimeSeconds = waitSeconds;
255257
}
256258

257-
public void addError(String errorMessage) {
258-
errorCount++;
259-
if (firstErrorMessage == null) {
260-
firstErrorMessage = errorMessage;
259+
public void addError(int errorCode) {
260+
retryCount++;
261+
if (firstErrorCode == 0) {
262+
firstErrorCode = errorCode;
261263
} else {
262-
lastErrorMessage = errorMessage;
264+
lastErrorCode = errorCode;
263265
}
264266
}
265267

@@ -277,9 +279,9 @@ private void readObject(ObjectInputStream stream) throws ClassNotFoundException,
277279
suffix = Util.readStringField(fields, "suffix", null);
278280
callbackParameters = Util.readObjectField(fields, "callbackParameters", null);
279281
partnerParameters = Util.readObjectField(fields, "partnerParameters", null);
280-
errorCount = Util.readIntField(fields, "errorCount", 0);
281-
firstErrorMessage = Util.readStringField(fields, "firstErrorMessage", null);
282-
lastErrorMessage = Util.readStringField(fields, "lastErrorMessage", null);
282+
retryCount = Util.readIntField(fields, "errorCount", 0);
283+
firstErrorCode = Util.readIntField(fields, "firstErrorCode", 0);
284+
lastErrorCode = Util.readIntField(fields, "lastErrorCode", 0);
283285
waitBeforeSendTimeSeconds = Util.readDoubleField(fields, "waitBeforeSendTimeSeconds", 0.0);
284286
}
285287

@@ -297,9 +299,9 @@ public boolean equals(Object other) {
297299
if (!Util.equalString(suffix, otherActivityPackage.suffix)) return false;
298300
if (!Util.equalObject(callbackParameters, otherActivityPackage.callbackParameters)) return false;
299301
if (!Util.equalObject(partnerParameters, otherActivityPackage.partnerParameters)) return false;
300-
if (!Util.equalInt(errorCount, otherActivityPackage.errorCount)) return false;
301-
if (!Util.equalString(firstErrorMessage, otherActivityPackage.firstErrorMessage)) return false;
302-
if (!Util.equalString(lastErrorMessage, otherActivityPackage.lastErrorMessage)) return false;
302+
if (!Util.equalInt(retryCount, otherActivityPackage.retryCount)) return false;
303+
if (!Util.equalInt(firstErrorCode, otherActivityPackage.firstErrorCode)) return false;
304+
if (!Util.equalInt(lastErrorCode, otherActivityPackage.lastErrorCode)) return false;
303305
if (!Util.equalsDouble(waitBeforeSendTimeSeconds, otherActivityPackage.waitBeforeSendTimeSeconds)) return false;
304306
return true;
305307
}
@@ -315,9 +317,9 @@ public int hashCode() {
315317
hashCode = Util.hashString(suffix, hashCode);
316318
hashCode = Util.hashObject(callbackParameters, hashCode);
317319
hashCode = Util.hashObject(partnerParameters, hashCode);
318-
hashCode = 37 * hashCode + errorCount;
319-
hashCode = Util.hashString(firstErrorMessage, hashCode);
320-
hashCode = Util.hashString(lastErrorMessage, hashCode);
320+
hashCode = 37 * hashCode + retryCount;
321+
hashCode = 37 * hashCode + firstErrorCode;
322+
hashCode = 37 * hashCode + lastErrorCode;
321323
hashCode = Util.hashDouble(waitBeforeSendTimeSeconds, hashCode);
322324
}
323325
return hashCode;

Adjust/sdk-core/src/main/java/com/adjust/sdk/AttributionHandler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private void sendAttributionRequestI() {
232232
}
233233

234234
// Create attribution package before sending attribution request.
235-
ActivityPackage attributionPackage = buildAndGetAttributionPackage();
235+
ActivityPackage attributionPackage = buildAndGetAttributionPackage(activityHandlerWeakRef.get().getInternalState());
236236
logger.verbose("%s", attributionPackage.getExtendedString());
237237

238238
Map<String, String> sendingParameters = generateSendingParametersI();
@@ -254,7 +254,7 @@ private Map<String, String> generateSendingParametersI() {
254254
return sendingParameters;
255255
}
256256

257-
private ActivityPackage buildAndGetAttributionPackage() {
257+
private ActivityPackage buildAndGetAttributionPackage(ActivityHandler.InternalState internalState) {
258258
long now = System.currentTimeMillis();
259259
IActivityHandler activityHandler = activityHandlerWeakRef.get();
260260
PackageBuilder packageBuilder = new PackageBuilder(
@@ -263,6 +263,8 @@ private ActivityPackage buildAndGetAttributionPackage() {
263263
activityHandler.getActivityState(),
264264
activityHandler.getSessionParameters(),
265265
now);
266+
packageBuilder.internalState = internalState;
267+
266268
ActivityPackage activityPackage = packageBuilder.buildAttributionPackage(lastInitiatedBy);
267269
lastInitiatedBy = null;
268270
return activityPackage;

Adjust/sdk-core/src/main/java/com/adjust/sdk/IActivityHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,6 @@ public interface IActivityHandler {
9898
ActivityState getActivityState();
9999

100100
SessionParameters getSessionParameters();
101+
102+
ActivityHandler.InternalState getInternalState();
101103
}

Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageFactory.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ public class PackageFactory {
2020
private static final String ADJUST_PREFIX = "adjust_";
2121

2222
public static ActivityPackage buildReftagSdkClickPackage(final String rawReferrer,
23-
final long clickTime,
24-
final ActivityState activityState,
25-
final AdjustConfig adjustConfig,
26-
final DeviceInfo deviceInfo,
27-
final SessionParameters sessionParameters) {
23+
final long clickTime,
24+
final ActivityState activityState,
25+
final AdjustConfig adjustConfig,
26+
final DeviceInfo deviceInfo,
27+
final SessionParameters sessionParameters,
28+
final ActivityHandler.InternalState internalState) {
2829
if (rawReferrer == null || rawReferrer.length() == 0) {
2930
return null;
3031
}
@@ -56,7 +57,8 @@ public static ActivityPackage buildReftagSdkClickPackage(final String rawReferre
5657
activityState,
5758
adjustConfig,
5859
deviceInfo,
59-
sessionParameters);
60+
sessionParameters,
61+
internalState);
6062

6163
if (clickPackageBuilder == null) {
6264
return null;
@@ -72,11 +74,12 @@ public static ActivityPackage buildReftagSdkClickPackage(final String rawReferre
7274
}
7375

7476
public static ActivityPackage buildDeeplinkSdkClickPackage(final Uri url,
75-
final long clickTime,
76-
final ActivityState activityState,
77-
final AdjustConfig adjustConfig,
78-
final DeviceInfo deviceInfo,
79-
final SessionParameters sessionParameters) {
77+
final long clickTime,
78+
final ActivityState activityState,
79+
final AdjustConfig adjustConfig,
80+
final DeviceInfo deviceInfo,
81+
final SessionParameters sessionParameters,
82+
final ActivityHandler.InternalState internalState) {
8083
if (url == null) {
8184
return null;
8285
}
@@ -114,7 +117,8 @@ public static ActivityPackage buildDeeplinkSdkClickPackage(final Uri url,
114117
activityState,
115118
adjustConfig,
116119
deviceInfo,
117-
sessionParameters);
120+
sessionParameters,
121+
internalState);
118122

119123
if (clickPackageBuilder == null) {
120124
return null;
@@ -133,7 +137,8 @@ public static ActivityPackage buildInstallReferrerSdkClickPackage(final Referrer
133137
final ActivityState activityState,
134138
final AdjustConfig adjustConfig,
135139
final DeviceInfo deviceInfo,
136-
final SessionParameters sessionParameters) {
140+
final SessionParameters sessionParameters,
141+
final ActivityHandler.InternalState internalState) {
137142
long now = System.currentTimeMillis();
138143

139144
PackageBuilder clickPackageBuilder = new PackageBuilder(
@@ -142,6 +147,7 @@ public static ActivityPackage buildInstallReferrerSdkClickPackage(final Referrer
142147
activityState,
143148
sessionParameters,
144149
now);
150+
clickPackageBuilder.internalState = internalState;
145151

146152
clickPackageBuilder.referrer = referrerDetails.installReferrer;
147153
clickPackageBuilder.clickTimeInSeconds = referrerDetails.referrerClickTimestampSeconds;
@@ -190,7 +196,8 @@ private static PackageBuilder queryStringClickPackageBuilder(
190196
final ActivityState activityState,
191197
final AdjustConfig adjustConfig,
192198
final DeviceInfo deviceInfo,
193-
final SessionParameters sessionParameters) {
199+
final SessionParameters sessionParameters,
200+
final ActivityHandler.InternalState internalState) {
194201
if (queryList == null) {
195202
return null;
196203
}
@@ -223,6 +230,7 @@ private static PackageBuilder queryStringClickPackageBuilder(
223230
sessionParameters,
224231
now);
225232

233+
builder.internalState = internalState;
226234
builder.extraParameters = queryStringParameters;
227235
builder.attribution = queryStringAttribution;
228236
builder.reftag = reftag;

Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,9 @@ private void sendFirstI() {
278278

279279
ActivityPackage firstPackage = packageQueue.get(0);
280280

281-
PackageBuilder.addLong(sendingParameters, "retry_count", firstPackage.getErrorCount());
282-
PackageBuilder.addString(sendingParameters, "first_error", firstPackage.getFirstErrorMessage());
283-
PackageBuilder.addString(sendingParameters, "last_error", firstPackage.getLastErrorMessage());
281+
PackageBuilder.addLong(sendingParameters, "retry_count", firstPackage.getRetryCount());
282+
PackageBuilder.addLong(sendingParameters, "first_error", firstPackage.getFirstErrorCode());
283+
PackageBuilder.addLong(sendingParameters, "last_error", firstPackage.getLastErrorCode());
284284
PackageBuilder.addDouble(sendingParameters, "wait_total", totalWaitTimeSeconds);
285285
PackageBuilder.addDouble(sendingParameters, "wait_time", firstPackage.getWaitBeforeSendTimeSeconds());
286286

Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ public void run() {
177177
activityHandler.getActivityState(),
178178
activityHandler.getAdjustConfig(),
179179
activityHandler.getDeviceInfo(),
180-
activityHandler.getSessionParameters());
180+
activityHandler.getSessionParameters(),
181+
activityHandler.getInternalState());
181182

182183
// Send referrer sdk_click package.
183184
sendSdkClick(sdkClickPackage);

Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ public ResponseData sendActivityPackageSync(final ActivityPackage activityPackag
107107
boolean retryToSend;
108108
ResponseData responseData;
109109
do {
110-
addErrorParameters(activityPackage, sendingParameters);
111-
112110
responseData =
113111
ResponseData.buildResponseData(activityPackage, sendingParameters);
114112

@@ -120,12 +118,6 @@ public ResponseData sendActivityPackageSync(final ActivityPackage activityPackag
120118
return responseData;
121119
}
122120

123-
private void addErrorParameters(ActivityPackage activityPackage, Map<String, String> sendingParameters) {
124-
PackageBuilder.addLong(sendingParameters, "error_count", activityPackage.getErrorCount());
125-
PackageBuilder.addString(sendingParameters, "first_error", activityPackage.getFirstErrorMessage());
126-
PackageBuilder.addString(sendingParameters, "last_error", activityPackage.getLastErrorMessage());
127-
}
128-
129121
private boolean shouldRetryToSend(final ResponseData responseData) {
130122
if (!responseData.willRetry) {
131123
logger.debug("Will not retry with current url strategy");
@@ -200,37 +192,44 @@ private void tryToGetResponse(final ResponseData responseData) {
200192
// a JSON response *AND* does not contain a retry_in
201193
responseData.willRetry =
202194
responseData.jsonResponse == null || responseData.retryIn != null;
195+
196+
if (responseData.jsonResponse == null) {
197+
responseData.activityPackage.addError(ErrorCodes.NULL_JSON_RESPONSE);
198+
} else if (responseData.retryIn != null) {
199+
responseData.activityPackage.addError(ErrorCodes.SERVER_RETRY_IN);
200+
}
201+
203202
} catch (final UnsupportedEncodingException exception) {
204203

205-
localError(exception, "Failed to encode parameters", responseData);
204+
localError(exception, "Failed to encode parameters", responseData, ErrorCodes.UNSUPPORTED_ENCODING_EXCEPTION);
206205

207206
} catch (final MalformedURLException exception) {
208207

209-
localError(exception, "Malformed URL", responseData);
208+
localError(exception, "Malformed URL", responseData, ErrorCodes.MALFORMED_URL_EXCEPTION);
210209

211210
} catch (final ProtocolException exception) {
212211

213-
localError(exception, "Protocol Error", responseData);
212+
localError(exception, "Protocol Error", responseData, ErrorCodes.PROTOCOL_EXCEPTION);
214213

215214
} catch (final SocketTimeoutException exception) {
216215

217216
// timeout is remote/network related -> did not fail locally
218-
remoteError(exception, "Request timed out", responseData);
217+
remoteError(exception, "Request timed out", responseData, ErrorCodes.SOCKET_TIMEOUT_EXCEPTION);
219218

220219
} catch (final SSLHandshakeException exception) {
221220

222221
// failed due certificate from the server -> did not fail locally
223-
remoteError(exception, "Certificate failed", responseData);
222+
remoteError(exception, "Certificate failed", responseData, ErrorCodes.SSL_HANDSHAKE_EXCEPTION);
224223

225224
} catch (final IOException exception) {
226225

227226
// IO is the network -> did not fail locally
228-
remoteError(exception, "Request failed", responseData);
227+
remoteError(exception, "Request failed", responseData, ErrorCodes.IO_EXCEPTION);
229228

230229
} catch (final Throwable t) {
231230

232231
// not sure if error is local or not -> assume it is local
233-
localError(t, "Sending SDK package", responseData);
232+
localError(t, "Sending SDK package", responseData, ErrorCodes.THROWABLE);
234233

235234
} finally {
236235
try {
@@ -247,16 +246,18 @@ private void tryToGetResponse(final ResponseData responseData) {
247246
}
248247
}
249248

250-
private void localError(Throwable throwable, String description, ResponseData responseData) {
249+
private void localError(Throwable throwable, String description, ResponseData responseData, int errorCode) {
251250
String finalMessage = errorMessage(throwable, description, responseData.activityPackage);
252251

253252
logger.error(finalMessage);
254253
responseData.message = finalMessage;
255254

256255
responseData.willRetry = false;
256+
257+
responseData.activityPackage.addError(errorCode);
257258
}
258259

259-
private void remoteError(Throwable throwable, String description, ResponseData responseData) {
260+
private void remoteError(Throwable throwable, String description, ResponseData responseData, Integer errorCode) {
260261
String finalMessage = errorMessage(throwable, description, responseData.activityPackage)
261262
+ " Will retry later";
262263

@@ -265,7 +266,7 @@ private void remoteError(Throwable throwable, String description, ResponseData r
265266

266267
responseData.willRetry = true;
267268

268-
responseData.activityPackage.addError(finalMessage);
269+
responseData.activityPackage.addError(errorCode);
269270
}
270271

271272
private String errorMessage(final Throwable throwable,

0 commit comments

Comments
 (0)