@@ -36,6 +36,8 @@ public class UIDOperatorService implements IUIDOperatorService {
3636 private static final Instant REFRESH_CUTOFF = LocalDateTime .parse ("2021-03-08T17:00:00" , DateTimeFormatter .ISO_LOCAL_DATE_TIME ).toInstant (ZoneOffset .UTC );
3737 private static final long DAY_IN_MS = Duration .ofDays (1 ).toMillis ();
3838
39+ private static final Map <IdentityVersion , Counter > ADVERTISING_ID_VERSION_COUNTERS = new HashMap <>();
40+
3941 private final ISaltProvider saltProvider ;
4042 private final IOptOutStore optOutStore ;
4143 private final ITokenEncoder encoder ;
@@ -83,18 +85,10 @@ public UIDOperatorService(IOptOutStore optOutStore, ISaltProvider saltProvider,
8385
8486 this .refreshTokenVersion = TokenVersion .V3 ;
8587 this .rawUidV3Enabled = identityV3Enabled ;
86- }
8788
88- private void validateTokenDurations (Duration refreshIdentityAfter , Duration refreshExpiresAfter , Duration identityExpiresAfter ) {
89- if (identityExpiresAfter .compareTo (refreshExpiresAfter ) > 0 ) {
90- throw new IllegalStateException (REFRESH_TOKEN_EXPIRES_AFTER_SECONDS + " (" + refreshExpiresAfter .toSeconds () + ") < " + IDENTITY_TOKEN_EXPIRES_AFTER_SECONDS + " (" + identityExpiresAfter .toSeconds () + ")" );
91- }
92- if (refreshIdentityAfter .compareTo (identityExpiresAfter ) > 0 ) {
93- throw new IllegalStateException (IDENTITY_TOKEN_EXPIRES_AFTER_SECONDS + " (" + identityExpiresAfter .toSeconds () + ") < " + REFRESH_IDENTITY_TOKEN_AFTER_SECONDS + " (" + refreshIdentityAfter .toSeconds () + ")" );
94- }
95- if (refreshIdentityAfter .compareTo (refreshExpiresAfter ) > 0 ) {
96- throw new IllegalStateException (REFRESH_TOKEN_EXPIRES_AFTER_SECONDS + " (" + refreshExpiresAfter .toSeconds () + ") < " + REFRESH_IDENTITY_TOKEN_AFTER_SECONDS + " (" + refreshIdentityAfter .toSeconds () + ")" );
97- }
89+ registerAdvertisingIdVersionCounter (IdentityVersion .V2 );
90+ registerAdvertisingIdVersionCounter (IdentityVersion .V3 );
91+ registerAdvertisingIdVersionCounter (IdentityVersion .V4 );
9892 }
9993
10094 @ Override
@@ -208,6 +202,18 @@ public boolean advertisingTokenMatches(String advertisingToken, UserIdentity use
208202 return Arrays .equals (mappedIdentity .advertisingId , token .userIdentity .id );
209203 }
210204
205+ private void validateTokenDurations (Duration refreshIdentityAfter , Duration refreshExpiresAfter , Duration identityExpiresAfter ) {
206+ if (identityExpiresAfter .compareTo (refreshExpiresAfter ) > 0 ) {
207+ throw new IllegalStateException (REFRESH_TOKEN_EXPIRES_AFTER_SECONDS + " (" + refreshExpiresAfter .toSeconds () + ") < " + IDENTITY_TOKEN_EXPIRES_AFTER_SECONDS + " (" + identityExpiresAfter .toSeconds () + ")" );
208+ }
209+ if (refreshIdentityAfter .compareTo (identityExpiresAfter ) > 0 ) {
210+ throw new IllegalStateException (IDENTITY_TOKEN_EXPIRES_AFTER_SECONDS + " (" + identityExpiresAfter .toSeconds () + ") < " + REFRESH_IDENTITY_TOKEN_AFTER_SECONDS + " (" + refreshIdentityAfter .toSeconds () + ")" );
211+ }
212+ if (refreshIdentityAfter .compareTo (refreshExpiresAfter ) > 0 ) {
213+ throw new IllegalStateException (REFRESH_TOKEN_EXPIRES_AFTER_SECONDS + " (" + refreshExpiresAfter .toSeconds () + ") < " + REFRESH_IDENTITY_TOKEN_AFTER_SECONDS + " (" + refreshIdentityAfter .toSeconds () + ")" );
214+ }
215+ }
216+
211217 private UserIdentity getFirstLevelHashIdentity (UserIdentity userIdentity , Instant asOf ) {
212218 return getFirstLevelHashIdentity (userIdentity .identityScope , userIdentity .identityType , userIdentity .id , asOf );
213219 }
@@ -240,15 +246,15 @@ private byte[] getAdvertisingId(UserIdentity firstLevelHashIdentity, String salt
240246 if (salt != null ) {
241247 if (rawUidV3Enabled ) {
242248 advertisingId = TokenUtils .getAdvertisingIdV3 (firstLevelHashIdentity .identityScope , firstLevelHashIdentity .identityType , firstLevelHashIdentity .id , salt );
243- incrementAdvertisingIdVersionCounter ("v3" );
249+ incrementAdvertisingIdVersionCounter (IdentityVersion . V3 );
244250 } else {
245251 advertisingId = TokenUtils .getAdvertisingIdV2 (firstLevelHashIdentity .id , salt );
246- incrementAdvertisingIdVersionCounter ("v2" );
252+ incrementAdvertisingIdVersionCounter (IdentityVersion . V2 );
247253 }
248254 } else {
249255 try {
250256 advertisingId = TokenUtils .getAdvertisingIdV4 (firstLevelHashIdentity .identityScope , firstLevelHashIdentity .identityType , env , firstLevelHashIdentity .id , key );
251- incrementAdvertisingIdVersionCounter ("v4" );
257+ incrementAdvertisingIdVersionCounter (IdentityVersion . V4 );
252258 } catch (Exception e ) {
253259 LOGGER .error ("Exception when generating V4 advertising ID" , e );
254260 advertisingId = null ;
@@ -258,12 +264,17 @@ private byte[] getAdvertisingId(UserIdentity firstLevelHashIdentity, String salt
258264 return advertisingId ;
259265 }
260266
261- private void incrementAdvertisingIdVersionCounter ( String version ) {
262- Counter .builder ("uid2_raw_uid_version_total" )
267+ private void registerAdvertisingIdVersionCounter ( IdentityVersion version ) {
268+ Counter counter = Counter .builder ("uid2_raw_uid_version_total" )
263269 .description ("counter for raw UID version" )
264- .tag ("version" , version )
265- .register (Metrics .globalRegistry )
266- .increment ();
270+ .tag ("version" , version .toString ())
271+ .register (Metrics .globalRegistry );
272+
273+ ADVERTISING_ID_VERSION_COUNTERS .put (version , counter );
274+ }
275+
276+ private void incrementAdvertisingIdVersionCounter (IdentityVersion version ) {
277+ ADVERTISING_ID_VERSION_COUNTERS .get (version ).increment ();
267278 }
268279
269280 private byte [] getPreviousAdvertisingId (UserIdentity firstLevelHashIdentity , SaltEntry rotatingSalt , Instant asOf , IdentityEnvironment env ) {
0 commit comments