Skip to content

Commit d0be037

Browse files
author
weiqiangliu
committed
Release 3.5.2
1 parent fc78153 commit d0be037

12 files changed

Lines changed: 215 additions & 23 deletions

File tree

SensorsAnalyticsSDK/pom.xml

Lines changed: 1 addition & 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.5.1</version>
18+
<version>3.5.2</version>
1919
<description>The official Java SDK of Sensors Analytics</description>
2020
<url>http://sensorsdata.cn</url>
2121

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,8 @@ void profileUnsetById(@NonNull SensorsAnalyticsIdentity analyticsIdentity, @NonN
600600

601601
void profileDelete(@NonNull String key, @NonNull String value) throws InvalidArgumentException;
602602

603+
void profileDelete(@NonNull Long userId) throws InvalidArgumentException;
604+
603605
void itemSet(@NonNull ItemSchema itemSchema) throws InvalidArgumentException;
604606

605607
void itemDelete(@NonNull ItemSchema itemSchema) throws InvalidArgumentException;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,12 @@ public void profileDelete(@NonNull String key, @NonNull String value) throws Inv
525525
worker.doSchemaData(new SensorsSchemaData(userSchema, PROFILE_DELETE_ACTION_TYPE));
526526
}
527527

528+
@Override
529+
public void profileDelete(@NonNull Long userId) throws InvalidArgumentException {
530+
UserSchema userSchema = UserSchema.init().setUserId(userId).start();
531+
worker.doSchemaData(new SensorsSchemaData(userSchema, PROFILE_DELETE_ACTION_TYPE));
532+
}
533+
528534
@Override
529535
public void itemSet(@NonNull ItemSchema itemSchema) throws InvalidArgumentException {
530536
worker.doSchemaData(new SensorsSchemaData(itemSchema, ITEM_SET_ACTION_TYPE));

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

Lines changed: 3 additions & 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.5.1";
18+
public static final String SDK_VERSION = "3.5.2";
1919
/**
2020
* 当前语言类型
2121
*/
@@ -33,6 +33,8 @@ private SensorsConst() {
3333
*/
3434
public static final String USER_SCHEMA = "users";
3535

36+
public static final String USER_ID_PREFIX = "SENSORS_ID:";
37+
3638
/**
3739
* 事件上报类型
3840
*/

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

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.sensorsdata.analytics.javasdk.bean.schema.UserSchema;
88
import com.sensorsdata.analytics.javasdk.common.Pair;
99
import com.sensorsdata.analytics.javasdk.common.SchemaTypeEnum;
10-
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
1110

1211
import lombok.extern.slf4j.Slf4j;
1312

@@ -100,15 +99,15 @@ public Map<String, Object> generateData() {
10099
data.put("event", getEvent());
101100
break;
102101
case USER:
103-
checkUserIdAndAddUser(data, userId, getDistinctId(), getIdentities());
102+
checkUserIdAndAddUser(data, "id");
104103
break;
105104
case USER_EVENT:
106105
data.put("event", getEvent());
107-
checkUserIdAndAddUser(getProperties(), userId, getDistinctId(), getIdentities());
106+
checkUserIdAndAddUser(getProperties(), "user_id");
108107
break;
109108
case USER_ITEM:
110109
data.put("id", getItemId());
111-
checkUserIdAndAddUser(getProperties(), userId, getDistinctId(), getIdentities());
110+
checkUserIdAndAddUser(getProperties(), "user_id");
112111
break;
113112
default:
114113
break;
@@ -140,18 +139,12 @@ public SchemaTypeEnum getSchemaTypeEnum() {
140139
}
141140

142141

143-
private void checkUserIdAndAddUser(Map<String, Object> data, Long userId, String distinctId,
144-
Map<String, String> identities) {
145-
if (null != userId) {
146-
if (null != distinctId || (null != identities && !identities.isEmpty())) {
147-
log.warn(
148-
"data record found userId,so (distinct_id/identities) node expired.[userId:{},distinctId:{},identities:{}]",
149-
userId, distinctId, SensorsAnalyticsUtil.toString(identities));
150-
}
151-
data.put("user_id", userId);
142+
private void checkUserIdAndAddUser(Map<String, Object> data, String key) {
143+
if (null != getUserId()) {
144+
data.put(key, getUserId());
152145
} else {
153146
data.put("identities", getIdentities());
154-
data.put("distinct_id", getDistinctId());
155147
}
148+
data.put("distinct_id", getDistinctId());
156149
}
157150
}

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/bean/schema/UserItemSchema.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ public UserItemSchema start() throws InvalidArgumentException {
7575
return new UserItemSchema(idMap, schema, itemId, properties, trackId, userId, distinctId);
7676
}
7777

78+
public UISBuilder setUserId(@NonNull Long userId) {
79+
this.userId = userId;
80+
return this;
81+
}
82+
7883
public UISBuilder setItemId(@NonNull String itemId) {
7984
this.itemId = itemId;
8085
return this;

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/bean/schema/UserSchema.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ public UserSchema start() throws InvalidArgumentException {
6161
return new UserSchema(idMap, properties, distinctId, trackId, userId);
6262
}
6363

64+
65+
public USBuilder setUserId(@NonNull Long userId) {
66+
this.userId = userId;
67+
return this;
68+
}
69+
6470
public USBuilder identityMap(@NonNull Map<String, String> identityMap) {
6571
this.idMap.putAll(identityMap);
6672
return this;

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/util/SensorsAnalyticsUtil.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,15 @@ public static String checkUserInfo(Long userId, Map<String, String> identities,
199199
if (identities.isEmpty() && null == userId) {
200200
throw new InvalidArgumentException("missing user info node(identities/user_id).");
201201
}
202-
if (!identities.isEmpty()) {
203-
Pair<String, Boolean> userPair = checkIdentitiesAndGenerateDistinctId(distinctId, identities);
204-
return userPair.getKey();
202+
if (userId != null) {
203+
if (distinctId != null) {
204+
assertValue("distinct_id", distinctId);
205+
return distinctId;
206+
} else
207+
return SensorsConst.USER_ID_PREFIX + userId;
205208
}
206-
return null;
209+
Pair<String, Boolean> userPair = checkIdentitiesAndGenerateDistinctId(distinctId, identities);
210+
return userPair.getKey();
207211
}
208212

209213

SensorsAnalyticsSDK/src/test/java/com.sensorsdata.analytics.javasdk/SchemaUserEventTest.java

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

3+
import static org.junit.Assert.assertEquals;
34
import static org.junit.Assert.assertTrue;
45
import static org.junit.Assert.fail;
56

@@ -8,9 +9,11 @@
89
import com.sensorsdata.analytics.javasdk.bean.schema.UserEventSchema;
910
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
1011

12+
import org.junit.Assert;
1113
import org.junit.Test;
1214

1315
import java.util.Date;
16+
import java.util.Map;
1417

1518
/**
1619
* userEventSchema 单元测试
@@ -122,4 +125,57 @@ public void checkSchemaUnbind() throws InvalidArgumentException {
122125

123126
}
124127

128+
129+
//----------------------------------v3.5.2--------------------------------------
130+
131+
/**
132+
* 支持 user 数据传入 userId 作为用户标识
133+
* <p>期望:用户数据传入 userId,最终节点中包含 userId 和 distinctId 信息 </p>
134+
*/
135+
@Test
136+
public void checkUserId() throws InvalidArgumentException {
137+
UserEventSchema userEventSchema = UserEventSchema.init()
138+
.setUserId(123L)
139+
.setEventName(EVENT_NAME)
140+
.start();
141+
sa.track(userEventSchema);
142+
assertUESData(data);
143+
}
144+
145+
/**
146+
* 同时传入 userID 和 identities 节点
147+
* <p>期望:userId 优先级最高,两者同时传入,最终数据中存在 userId </p>
148+
*/
149+
@Test
150+
public void checkUserIdAndIdentities() throws InvalidArgumentException {
151+
UserEventSchema userEventSchema = UserEventSchema.init()
152+
.setUserId(123L)
153+
.addIdentityProperty(SensorsAnalyticsIdentity.LOGIN_ID, "eee")
154+
.setEventName(EVENT_NAME)
155+
.start();
156+
sa.track(userEventSchema);
157+
assertUESData(data);
158+
Map<String, Object> properties = (Map<String, Object>) data.get("properties");
159+
assertTrue(properties.containsKey("user_id"));
160+
assertEquals(123L, properties.get("user_id"));
161+
}
162+
163+
/**
164+
* 同时传入 userID 和 distinctId 节点
165+
* <p>期望:最终数据节点中,以传入的 distinctId 为主 </p>
166+
*/
167+
@Test
168+
public void checkUserIdAndDistinctId() throws InvalidArgumentException {
169+
UserEventSchema userEventSchema = UserEventSchema.init()
170+
.setUserId(123L)
171+
.setDistinctId("test")
172+
.setEventName(EVENT_NAME)
173+
.start();
174+
sa.track(userEventSchema);
175+
assertUESData(data);
176+
Map<String, Object> properties = (Map<String, Object>) data.get("properties");
177+
Assert.assertTrue(properties.containsKey("distinct_id"));
178+
Assert.assertEquals("test", properties.get("distinct_id"));
179+
}
180+
125181
}

SensorsAnalyticsSDK/src/test/java/com.sensorsdata.analytics.javasdk/SchemaUserItemTest.java

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

3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNotNull;
35
import static org.junit.Assert.assertTrue;
46
import static org.junit.Assert.fail;
57

8+
import com.sensorsdata.analytics.javasdk.bean.SensorsAnalyticsIdentity;
69
import com.sensorsdata.analytics.javasdk.bean.schema.UserItemSchema;
10+
import com.sensorsdata.analytics.javasdk.bean.schema.UserSchema;
711
import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;
812

13+
import org.junit.Assert;
914
import org.junit.Test;
1015

16+
import java.util.Map;
17+
1118
/**
1219
* TODO
1320
*
@@ -74,4 +81,65 @@ public void checkIdentities() throws InvalidArgumentException {
7481
assertUISData(data);
7582
}
7683

84+
85+
//----------------------------------v3.5.2--------------------------------------
86+
87+
/**
88+
* 支持 user 数据传入 userId 作为用户标识
89+
* <p>期望:用户数据传入 userId,最终节点中包含 userId 和 distinctId 信息 </p>
90+
*/
91+
@Test
92+
public void checkUserId() throws InvalidArgumentException {
93+
UserItemSchema userItemSchema = UserItemSchema.init()
94+
.setItemId("eee")
95+
.setSchema("www")
96+
.setUserId(123L)
97+
.start();
98+
sa.itemSet(userItemSchema);
99+
assertUISData(data);
100+
}
101+
102+
/**
103+
* 同时传入 userID 和 identities 节点
104+
* <p>期望:userId 优先级最高,两者同时传入,最终数据中存在 userId </p>
105+
*/
106+
@Test
107+
public void checkUserIdAndIdentities() throws InvalidArgumentException {
108+
UserItemSchema userItemSchema = UserItemSchema.init()
109+
.setItemId("eee")
110+
.setSchema("www")
111+
.setUserId(123L)
112+
.addIdentityProperty(SensorsAnalyticsIdentity.LOGIN_ID, "login_id123")
113+
.start();
114+
sa.itemSet(userItemSchema);
115+
assertUISData(data);
116+
Map<String, Object> properties = (Map<String, Object>) data.get("properties");
117+
assertTrue(properties.containsKey("user_id"));
118+
}
119+
120+
/**
121+
* 同时传入 userID 和 distinctId 节点
122+
* <p>期望:最终数据节点中,以传入的 distinctId 为主 </p>
123+
*/
124+
@Test
125+
public void checkUserIdAndDistinctId() throws InvalidArgumentException {
126+
UserSchema userSchema = UserSchema.init()
127+
.setUserId(123L)
128+
.setDistinctId("test")
129+
.addIdentityProperty("key1", "value1")
130+
.addProperty("$project", "abc")
131+
.start();
132+
sa.profileSet(userSchema);
133+
assertUSData(data);
134+
Assert.assertTrue(data.containsKey("distinct_id"));
135+
Assert.assertEquals("test", data.get("distinct_id"));
136+
}
137+
138+
@Test
139+
public void checkProfileDeleteUserId() throws InvalidArgumentException {
140+
sa.profileDelete(123L);
141+
assertUSData(data);
142+
assertEquals(123L, data.get("id"));
143+
assertNotNull(data.get("distinct_id"));
144+
}
77145
}

0 commit comments

Comments
 (0)