Skip to content

Commit aa43a8c

Browse files
author
xuchang
committed
Release 3.3.1
1 parent 1872627 commit aa43a8c

27 files changed

+1382
-140
lines changed

SensorsAnalyticsSDK/pom.xml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<groupId>com.sensorsdata.analytics.javasdk</groupId>
1616
<name>SensorsAnalyticsSDK</name>
1717
<artifactId>SensorsAnalyticsSDK</artifactId>
18-
<version>3.3.0</version>
18+
<version>3.3.1</version>
1919
<description>The official Java SDK of Sensors Analytics</description>
2020
<url>http://sensorsdata.cn</url>
2121

@@ -53,6 +53,8 @@
5353
<jackson-databind.version>2.9.10.7</jackson-databind.version>
5454
<lombok.version>1.18.20</lombok.version>
5555
<junit.version>4.11</junit.version>
56+
<slf4j.version>1.7.25</slf4j.version>
57+
<slf4j-simple.version>1.6.6</slf4j-simple.version>
5658
</properties>
5759

5860
<dependencies>
@@ -72,6 +74,17 @@
7274
<version>${lombok.version}</version>
7375
<scope>provided</scope>
7476
</dependency>
77+
<dependency>
78+
<groupId>org.slf4j</groupId>
79+
<artifactId>slf4j-api</artifactId>
80+
<version>${slf4j.version}</version>
81+
</dependency>
82+
<dependency>
83+
<groupId>org.slf4j</groupId>
84+
<artifactId>slf4j-simple</artifactId>
85+
<version>${slf4j-simple.version}</version>
86+
<scope>test</scope>
87+
</dependency>
7588
<dependency>
7689
<groupId>junit</groupId>
7790
<artifactId>junit</artifactId>

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/ISensorsAnalytics.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package com.sensorsdata.analytics.javasdk;
22

3-
import com.sensorsdata.analytics.javasdk.bean.*;
3+
import com.sensorsdata.analytics.javasdk.bean.EventRecord;
4+
import com.sensorsdata.analytics.javasdk.bean.ItemRecord;
5+
import com.sensorsdata.analytics.javasdk.bean.SensorsAnalyticsIdentity;
6+
import com.sensorsdata.analytics.javasdk.bean.SuperPropertiesRecord;
7+
import com.sensorsdata.analytics.javasdk.bean.UserRecord;
48
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
9+
510
import lombok.NonNull;
611

712
import java.util.Map;

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsAnalytics.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,38 @@
11
package com.sensorsdata.analytics.javasdk;
22

3-
import com.sensorsdata.analytics.javasdk.bean.*;
3+
import static com.sensorsdata.analytics.javasdk.SensorsConst.BIND_ID;
4+
import static com.sensorsdata.analytics.javasdk.SensorsConst.BIND_ID_ACTION_TYPE;
5+
import static com.sensorsdata.analytics.javasdk.SensorsConst.ITEM_DELETE_ACTION_TYPE;
6+
import static com.sensorsdata.analytics.javasdk.SensorsConst.ITEM_SET_ACTION_TYPE;
7+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_APPEND_ACTION_TYPE;
8+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_DELETE_ACTION_TYPE;
9+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_INCREMENT_ACTION_TYPE;
10+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_SET_ACTION_TYPE;
11+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_SET_ONCE_ACTION_TYPE;
12+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_UNSET_ACTION_TYPE;
13+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROJECT_SYSTEM_ATTR;
14+
import static com.sensorsdata.analytics.javasdk.SensorsConst.SIGN_UP_SYSTEM_ATTR;
15+
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_ACTION_TYPE;
16+
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_SIGN_UP_ACTION_TYPE;
17+
import static com.sensorsdata.analytics.javasdk.SensorsConst.UNBIND_ID;
18+
import static com.sensorsdata.analytics.javasdk.SensorsConst.UNBIND_ID_ACTION_TYPE;
19+
20+
import com.sensorsdata.analytics.javasdk.bean.EventRecord;
21+
import com.sensorsdata.analytics.javasdk.bean.ItemRecord;
22+
import com.sensorsdata.analytics.javasdk.bean.SensorsAnalyticsIdentity;
23+
import com.sensorsdata.analytics.javasdk.bean.SuperPropertiesRecord;
24+
import com.sensorsdata.analytics.javasdk.bean.UserRecord;
425
import com.sensorsdata.analytics.javasdk.consumer.Consumer;
526
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
627
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
28+
729
import lombok.NonNull;
830

931
import java.util.ArrayList;
1032
import java.util.HashMap;
1133
import java.util.List;
1234
import java.util.Map;
1335

14-
import static com.sensorsdata.analytics.javasdk.SensorsConst.*;
15-
1636
/**
1737
* Sensors Analytics SDK
1838
*/

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsAnalyticsWorker.java

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
package com.sensorsdata.analytics.javasdk;
22

3+
import static com.sensorsdata.analytics.javasdk.SensorsConst.APP_VERSION_SYSTEM_ATTR;
4+
import static com.sensorsdata.analytics.javasdk.SensorsConst.BIND_ID_ACTION_TYPE;
5+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB;
6+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_SYSTEM_ATTR;
7+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_VERSION_SYSTEM_ATTR;
8+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LOGIN_SYSTEM_ATTR;
9+
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROJECT_SYSTEM_ATTR;
10+
import static com.sensorsdata.analytics.javasdk.SensorsConst.SDK_VERSION;
11+
import static com.sensorsdata.analytics.javasdk.SensorsConst.TINE_SYSTEM_ATTR;
12+
import static com.sensorsdata.analytics.javasdk.SensorsConst.TOKEN_SYSTEM_ATTR;
13+
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_ACTION_TYPE;
14+
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_SIGN_UP_ACTION_TYPE;
15+
import static com.sensorsdata.analytics.javasdk.SensorsConst.UNBIND_ID_ACTION_TYPE;
16+
317
import com.sensorsdata.analytics.javasdk.bean.SensorsAnalyticsIdentity;
418
import com.sensorsdata.analytics.javasdk.consumer.Consumer;
19+
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
20+
21+
import lombok.extern.slf4j.Slf4j;
522

623
import java.util.Date;
724
import java.util.HashMap;
825
import java.util.Map;
926
import java.util.Random;
1027
import java.util.concurrent.ConcurrentHashMap;
1128

12-
import static com.sensorsdata.analytics.javasdk.SensorsConst.*;
13-
14-
29+
@Slf4j
1530
class SensorsAnalyticsWorker {
1631

1732
private final Consumer consumer;
@@ -27,12 +42,14 @@ public SensorsAnalyticsWorker(Consumer consumer) {
2742
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
2843
@Override
2944
public void run() {
45+
log.info("Triggered flush when the program is closed.");
3046
flush();
3147
}
3248
}));
3349
}
3450

3551
void setEnableTimeFree(boolean enableTimeFree) {
52+
log.info("Call setEnableTimeFree method with param:{}", enableTimeFree);
3653
this.enableTimeFree = enableTimeFree;
3754
}
3855

@@ -44,6 +61,7 @@ void clearSuperProperties() {
4461
this.superProperties.clear();
4562
this.superProperties.put(LIB_SYSTEM_ATTR, LIB);
4663
this.superProperties.put(LIB_VERSION_SYSTEM_ATTR, SDK_VERSION);
64+
log.info("Call clearSuperProperties method.");
4765
}
4866

4967
void doAddEvent(String distinctId, boolean isLoginId, String originDistinctId, String actionType, String eventName,
@@ -172,23 +190,10 @@ private Map<String, Object> generateEventMap(String distinctId, Boolean isLoginI
172190
}
173191

174192
private Map<String, String> getLibProperties() {
175-
Map<String, String> libProperties = new HashMap<>();
176-
libProperties.put(LIB_SYSTEM_ATTR, LIB);
177-
libProperties.put(LIB_VERSION_SYSTEM_ATTR, SDK_VERSION);
178-
libProperties.put(LIB_METHOD_SYSTEM_ATTR, "code");
179-
193+
Map<String, String> libInfo = SensorsAnalyticsUtil.generateLibInfo();
180194
if (this.superProperties.containsKey(APP_VERSION_SYSTEM_ATTR)) {
181-
libProperties.put(APP_VERSION_SYSTEM_ATTR, (String) this.superProperties.get(APP_VERSION_SYSTEM_ATTR));
182-
}
183-
184-
StackTraceElement[] trace = (new Exception()).getStackTrace();
185-
186-
if (trace.length > 3) {
187-
StackTraceElement traceElement = trace[3];
188-
libProperties.put(LIB_DETAIL_SYSTEM_ATTR,
189-
String.format("%s##%s##%s##%s", traceElement.getClassName(), traceElement.getMethodName(),
190-
traceElement.getFileName(), traceElement.getLineNumber()));
195+
libInfo.put(APP_VERSION_SYSTEM_ATTR, (String) this.superProperties.get(APP_VERSION_SYSTEM_ATTR));
191196
}
192-
return libProperties;
197+
return libInfo;
193198
}
194199
}

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsConst.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ private SensorsConst() {
1515
/**
1616
* 当前JDK版本号,注意要和pom文件里面的version保持一致
1717
*/
18-
public static final String SDK_VERSION = "3.3.0";
18+
public static final String SDK_VERSION = "3.3.1";
1919
/**
2020
* 当前语言类型
2121
*/

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/bean/SensorsAnalyticsIdentity.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.sensorsdata.analytics.javasdk.bean;
22

3-
import lombok.*;
3+
import lombok.AccessLevel;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.Setter;
48

59
import java.util.HashMap;
610
import java.util.Map;

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/consumer/BatchConsumer.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.sensorsdata.analytics.javasdk.consumer;
22

3+
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
4+
35
import com.fasterxml.jackson.core.JsonProcessingException;
46
import com.fasterxml.jackson.databind.ObjectMapper;
5-
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
7+
import lombok.extern.slf4j.Slf4j;
68

79
import java.util.LinkedList;
810
import java.util.List;
911
import java.util.Map;
1012

13+
@Slf4j
1114
public class BatchConsumer implements Consumer {
1215
private static final int MAX_FLUSH_BULK_SIZE = 1000;
1316
private static final int MAX_CACHE_SIZE = 6000;
@@ -39,8 +42,8 @@ public BatchConsumer(final String serverUrl, final int bulkSize, final int timeo
3942

4043
public BatchConsumer(final String serverUrl, final int bulkSize, final int timeoutSec, final int maxCacheSize,
4144
final boolean throwException) {
42-
this.messageList = new LinkedList<Map<String, Object>>();
43-
this.httpConsumer = new HttpConsumer(serverUrl, Math.max(timeoutSec,1));
45+
this.messageList = new LinkedList<>();
46+
this.httpConsumer = new HttpConsumer(serverUrl, Math.max(timeoutSec, 1));
4447
this.jsonMapper = SensorsAnalyticsUtil.getJsonObjectMapper();
4548
this.bulkSize = Math.min(MAX_FLUSH_BULK_SIZE, bulkSize);
4649
if (maxCacheSize > MAX_CACHE_SIZE) {
@@ -51,6 +54,9 @@ public BatchConsumer(final String serverUrl, final int bulkSize, final int timeo
5154
this.maxCacheSize = maxCacheSize;
5255
}
5356
this.throwException = throwException;
57+
log.info(
58+
"Initialize BatchConsumer with params:[bulkSize:{},timeoutSec:{},maxCacheSize:{},throwException:{}]",
59+
bulkSize, timeoutSec, maxCacheSize, throwException);
5460
}
5561

5662
@Override
@@ -60,8 +66,11 @@ public void send(Map<String, Object> message) {
6066
if (maxCacheSize <= 0 || size < maxCacheSize) {
6167
messageList.add(message);
6268
++size;
69+
log.info("Successfully save data to cache,The cache current size is {}.", size);
6370
}
6471
if (size >= bulkSize) {
72+
log.info("Flush was triggered because the cache size reached the threshold,cache size:{},bulkSize:{}.",
73+
size, bulkSize);
6574
flush();
6675
}
6776
}
@@ -71,35 +80,39 @@ public void send(Map<String, Object> message) {
7180
public void flush() {
7281
synchronized (messageList) {
7382
while (!messageList.isEmpty()) {
74-
String sendingData = null;
75-
List<Map<String, Object>> sendList =
76-
messageList.subList(0, Math.min(bulkSize, messageList.size()));
83+
String sendingData;
84+
List<Map<String, Object>> sendList = messageList.subList(0, Math.min(bulkSize, messageList.size()));
7785
try {
7886
sendingData = jsonMapper.writeValueAsString(sendList);
7987
} catch (JsonProcessingException e) {
8088
sendList.clear();
89+
log.error("Failed to process json.", e);
8190
if (throwException) {
8291
throw new RuntimeException("Failed to serialize data.", e);
8392
}
8493
continue;
8594
}
86-
95+
log.debug("Will be send data:{}.", sendingData);
8796
try {
8897
this.httpConsumer.consume(sendingData);
8998
sendList.clear();
9099
} catch (Exception e) {
100+
log.error("Failed to send data:{}.", sendingData, e);
91101
if (throwException) {
92102
throw new RuntimeException("Failed to dump message with BatchConsumer.", e);
93103
}
94104
return;
95105
}
106+
log.debug("Successfully send data:{}.", sendingData);
96107
}
108+
log.info("Finish flush.");
97109
}
98110
}
99111

100112
@Override
101113
public void close() {
102114
flush();
103115
httpConsumer.close();
116+
log.info("Call close method.");
104117
}
105118
}

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/consumer/ConcurrentLoggingConsumer.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.sensorsdata.analytics.javasdk.consumer;
22

3+
import lombok.extern.slf4j.Slf4j;
4+
35
import java.io.FileNotFoundException;
46
import java.io.FileOutputStream;
57
import java.io.IOException;
68
import java.nio.channels.FileChannel;
79
import java.nio.channels.FileLock;
10+
import java.nio.charset.StandardCharsets;
811
import java.util.HashMap;
912
import java.util.Map;
1013

14+
@Slf4j
1115
public class ConcurrentLoggingConsumer extends InnerLoggingConsumer {
1216

1317
public ConcurrentLoggingConsumer(final String filenamePrefix) {
@@ -69,7 +73,7 @@ static class InnerLoggingFileWriter implements LoggingFileWriter {
6973
private static final Map<String, InnerLoggingFileWriter> instances;
7074

7175
static {
72-
instances = new HashMap<String, InnerLoggingFileWriter>();
76+
instances = new HashMap<>();
7377
}
7478

7579
static InnerLoggingFileWriter getInstance(final String fileName, final String lockFileName) throws FileNotFoundException {
@@ -105,6 +109,7 @@ public void close() {
105109
try {
106110
outputStream.close();
107111
} catch (Exception e) {
112+
log.error("Failed to close output stream.", e);
108113
throw new RuntimeException("fail to close output stream.", e);
109114
}
110115
}
@@ -124,14 +129,16 @@ public boolean write(final StringBuilder sb) {
124129
initLock();
125130
}
126131
lock = channel.lock(0, Long.MAX_VALUE, false);
127-
outputStream.write(sb.toString().getBytes("UTF-8"));
132+
outputStream.write(sb.toString().getBytes(StandardCharsets.UTF_8));
128133
} catch (Exception e) {
134+
log.error("Failed to write file.", e);
129135
throw new RuntimeException("fail to write file.", e);
130136
} finally {
131137
if (lock != null) {
132138
try {
133139
lock.release();
134140
} catch (IOException e) {
141+
log.error("Failed to release file lock.", e);
135142
throw new RuntimeException("fail to release file lock.", e);
136143
}
137144
}

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/consumer/ConsoleConsumer.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package com.sensorsdata.analytics.javasdk.consumer;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
54

5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import lombok.extern.slf4j.Slf4j;
7+
68
import java.io.IOException;
79
import java.io.Writer;
810
import java.util.Map;
911

12+
@Slf4j
1013
public class ConsoleConsumer implements Consumer {
1114
private final ObjectMapper jsonMapper;
1215
private final Writer writer;
1316

1417
public ConsoleConsumer(final Writer writer) {
1518
this.jsonMapper = SensorsAnalyticsUtil.getJsonObjectMapper();
1619
this.writer = writer;
20+
log.info("Initialize ConsoleConsumer.");
1721
}
1822

1923
@Override
@@ -24,6 +28,7 @@ public void send(Map<String, Object> message) {
2428
writer.write("\n");
2529
}
2630
} catch (IOException e) {
31+
log.error("Failed to dump message with ConsoleConsumer.", e);
2732
throw new RuntimeException("Failed to dump message with ConsoleConsumer.", e);
2833
}
2934
}
@@ -34,6 +39,7 @@ public void flush() {
3439
try {
3540
writer.flush();
3641
} catch (IOException e) {
42+
log.error("Failed to flush with ConsoleConsumer.", e);
3743
throw new RuntimeException("Failed to flush with ConsoleConsumer.", e);
3844
}
3945
}

0 commit comments

Comments
 (0)