Skip to content

Commit b36155c

Browse files
committed
add boolean in MappedIdentity to enable calculating previousAdvertisingId
1 parent 147b3a0 commit b36155c

5 files changed

Lines changed: 30 additions & 6 deletions

File tree

src/main/java/com/uid2/operator/model/MapRequest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,23 @@ public final class MapRequest {
66
public final UserIdentity userIdentity;
77
public final Instant asOf;
88
public final IdentityEnvironment identityEnvironment;
9+
public final boolean includePreviousAdvertisingId;
910

1011
public MapRequest(
1112
UserIdentity userIdentity,
1213
Instant asOf,
1314
IdentityEnvironment identityEnvironment) {
15+
this(userIdentity, asOf, identityEnvironment, true);
16+
}
17+
18+
public MapRequest(
19+
UserIdentity userIdentity,
20+
Instant asOf,
21+
IdentityEnvironment identityEnvironment,
22+
boolean includePreviousAdvertisingId) {
1423
this.userIdentity = userIdentity;
1524
this.asOf = asOf;
1625
this.identityEnvironment = identityEnvironment;
26+
this.includePreviousAdvertisingId = includePreviousAdvertisingId;
1727
}
1828
}

src/main/java/com/uid2/operator/model/MappedIdentity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ public class MappedIdentity {
44
public static final MappedIdentity LogoutIdentity = new MappedIdentity(new byte[33], "", null, null);
55
public final byte[] advertisingId;
66
public final String bucketId;
7+
/**
8+
* The advertising ID computed using the previous rotating salt, or {@code null} if:
9+
* <ul>
10+
* <li>The caller did not request it (i.e. {@code MapRequest.includePreviousAdvertisingId} was {@code false}), or</li>
11+
* <li>No previous salt is available, or the salt was last rotated more than 90 days ago.</li>
12+
* </ul>
13+
*/
714
public final byte[] previousAdvertisingId;
815
public final Long refreshFrom;
916

src/main/java/com/uid2/operator/service/UIDOperatorService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public MappedIdentity mapIdentity(MapRequest request) {
156156
if (getGlobalOptOutResult(firstLevelHashIdentity, false).isOptedOut()) {
157157
return MappedIdentity.LogoutIdentity;
158158
} else {
159-
return getMappedIdentity(firstLevelHashIdentity, request.asOf, request.identityEnvironment);
159+
return getMappedIdentity(firstLevelHashIdentity, request.asOf, request.identityEnvironment, request.includePreviousAdvertisingId);
160160
}
161161
}
162162

@@ -248,9 +248,15 @@ private byte[] getFirstLevelHash(byte[] identityHash, Instant asOf) {
248248
}
249249

250250
private MappedIdentity getMappedIdentity(UserIdentity firstLevelHashIdentity, Instant asOf, IdentityEnvironment env) {
251+
return getMappedIdentity(firstLevelHashIdentity, asOf, env, false);
252+
}
253+
254+
private MappedIdentity getMappedIdentity(UserIdentity firstLevelHashIdentity, Instant asOf, IdentityEnvironment env, boolean includePreviousAdvertisingId) {
251255
final SaltEntry rotatingSalt = getSaltProviderSnapshot(asOf).getRotatingSalt(firstLevelHashIdentity.id);
252256
final byte[] advertisingId = getAdvertisingId(firstLevelHashIdentity, rotatingSalt.currentSalt(), rotatingSalt.currentKeySalt(), env);
253-
final byte[] previousAdvertisingId = getPreviousAdvertisingId(firstLevelHashIdentity, rotatingSalt, asOf, env);
257+
final byte[] previousAdvertisingId = includePreviousAdvertisingId
258+
? getPreviousAdvertisingId(firstLevelHashIdentity, rotatingSalt, asOf, env)
259+
: null;
254260
final long refreshFrom = getRefreshFrom(rotatingSalt, asOf);
255261

256262
return new MappedIdentity(

src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,8 @@ private JsonObject handleIdentityMapCommon(RoutingContext rc, InputUtil.InputVal
11141114
new MapRequest(
11151115
input.toUserIdentity(this.identityScope, 0, now),
11161116
now,
1117-
env));
1117+
env,
1118+
false)); // v2 does not use previousAdvertisingId
11181119

11191120
if (mappedIdentity.isOptedOut()) {
11201121
final JsonObject resp = new JsonObject();

src/test/java/com/uid2/operator/UIDOperatorServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ void testMappedIdentityWithPreviousSaltReturnsPreviousUid() {
835835

836836
var email = "test@uid.com";
837837
InputUtil.InputVal emailInput = generateInputVal(TestIdentityInputType.Email, email);
838-
MapRequest mapRequest = new MapRequest(emailInput.toUserIdentity(IdentityScope.UID2, 0, this.now), now, IdentityEnvironment.TEST);
838+
MapRequest mapRequest = new MapRequest(emailInput.toUserIdentity(IdentityScope.UID2, 0, this.now), now, IdentityEnvironment.TEST);
839839

840840
MappedIdentity mappedIdentity = uid2Service.mapIdentity(mapRequest);
841841

@@ -858,7 +858,7 @@ void testMappedIdentityWithOutdatedPreviousSaltReturnsNoPreviousUid(long extraMs
858858

859859
var email = "test@uid.com";
860860
InputUtil.InputVal emailInput = generateInputVal(TestIdentityInputType.Email, email);
861-
MapRequest mapRequest = new MapRequest(emailInput.toUserIdentity(IdentityScope.UID2, 0, this.now), now, IdentityEnvironment.TEST);
861+
MapRequest mapRequest = new MapRequest(emailInput.toUserIdentity(IdentityScope.UID2, 0, this.now), now, IdentityEnvironment.TEST);
862862

863863
MappedIdentity mappedIdentity = uid2Service.mapIdentity(mapRequest);
864864
var expectedCurrentUID = UIDOperatorVerticleTest.getRawUid(IdentityScope.UID2, IdentityType.Email, email, FIRST_LEVEL_SALT, salt.currentSalt(), uid2Config.getBoolean(IdentityV3Prop));
@@ -878,7 +878,7 @@ void testMappedIdentityWithNoPreviousSaltReturnsNoPreviousUid() {
878878

879879
var email = "test@uid.com";
880880
InputUtil.InputVal emailInput = generateInputVal(TestIdentityInputType.Email, email);
881-
MapRequest mapRequest = new MapRequest(emailInput.toUserIdentity(IdentityScope.UID2, 0, this.now), now, IdentityEnvironment.TEST);
881+
MapRequest mapRequest = new MapRequest(emailInput.toUserIdentity(IdentityScope.UID2, 0, this.now), now, IdentityEnvironment.TEST);
882882

883883
MappedIdentity mappedIdentity = uid2Service.mapIdentity(mapRequest);
884884

0 commit comments

Comments
 (0)