Skip to content

Commit 089ed03

Browse files
committed
Fix checkstyle and move test to a proper package
1 parent 53431fb commit 089ed03

8 files changed

Lines changed: 119 additions & 23 deletions

File tree

src/main/java/org/prebid/server/activity/infrastructure/creator/ActivityInfrastructureCreator.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.prebid.server.settings.model.Purposes;
2424
import org.prebid.server.settings.model.activity.AccountActivityConfiguration;
2525
import org.prebid.server.settings.model.activity.privacy.AccountPrivacyModuleConfig;
26+
import org.prebid.server.settings.model.activity.rule.AccountActivityRuleConfig;
2627

2728
import java.util.Arrays;
2829
import java.util.Collections;
@@ -171,7 +172,8 @@ private ActivityController from(Activity activity,
171172
final boolean allow = allowFromConfig(activityConfiguration.getAllow());
172173
final List<Rule> rules = ListUtils.emptyIfNull(activityConfiguration.getRules()).stream()
173174
.filter(Objects::nonNull)
174-
.map(ruleConfiguration -> activityRuleFactory.from(ruleConfiguration, creationContext))
175+
.map(ruleConfiguration -> createRule(ruleConfiguration, creationContext))
176+
.filter(Objects::nonNull)
175177
.toList();
176178

177179
return ActivityController.of(allow, rules, debug);
@@ -181,6 +183,20 @@ private static boolean allowFromConfig(Boolean configValue) {
181183
return configValue != null ? configValue : ActivityInfrastructure.ALLOW_ACTIVITY_BY_DEFAULT;
182184
}
183185

186+
private Rule createRule(AccountActivityRuleConfig ruleConfiguration,
187+
ActivityControllerCreationContext creationContext) {
188+
189+
try {
190+
return activityRuleFactory.from(ruleConfiguration, creationContext);
191+
} catch (Exception e) {
192+
logger.error("ActivityInfrastructure rule creation failed: %s. Configuration: %s"
193+
.formatted(e.getMessage(), ruleConfiguration));
194+
metrics.updateAlertsMetrics(MetricName.general);
195+
196+
return null;
197+
}
198+
}
199+
184200
private static Supplier<Map<Activity, ActivityController>> enumMapFactory() {
185201
return () -> new EnumMap<>(Activity.class);
186202
}

src/main/java/org/prebid/server/activity/infrastructure/creator/privacy/uscustomlogic/USCustomLogicModuleCreator.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
import org.prebid.server.exception.InvalidAccountConfigException;
1818
import org.prebid.server.json.DecodeException;
1919
import org.prebid.server.json.JsonLogic;
20+
import org.prebid.server.log.ConditionalLogger;
21+
import org.prebid.server.log.Logger;
22+
import org.prebid.server.log.LoggerFactory;
2023
import org.prebid.server.metric.MetricName;
2124
import org.prebid.server.metric.Metrics;
2225
import org.prebid.server.settings.SettingsCache;
@@ -34,6 +37,9 @@
3437

3538
public class USCustomLogicModuleCreator implements PrivacyModuleCreator {
3639

40+
private static final Logger logger = LoggerFactory.getLogger(USCustomLogicModuleCreator.class);
41+
private static final ConditionalLogger conditionalLogger = new ConditionalLogger(logger);
42+
3743
private static final Set<Integer> ALLOWED_SECTIONS_IDS =
3844
PrivacySection.US_PRIVACY_SECTIONS.stream()
3945
.map(PrivacySection::sectionId)
@@ -43,16 +49,19 @@ public class USCustomLogicModuleCreator implements PrivacyModuleCreator {
4349
private final JsonLogic jsonLogic;
4450
private final Map<String, JsonLogicNode> jsonLogicNodesCache;
4551
private final Metrics metrics;
52+
private final double samplingRate;
4653

4754
public USCustomLogicModuleCreator(USCustomLogicGppReaderFactory gppReaderFactory,
4855
JsonLogic jsonLogic,
4956
Integer cacheTtl,
5057
Integer cacheSize,
51-
Metrics metrics) {
58+
Metrics metrics,
59+
double samplingRate) {
5260

5361
this.gppReaderFactory = Objects.requireNonNull(gppReaderFactory);
5462
this.jsonLogic = Objects.requireNonNull(jsonLogic);
5563
this.metrics = Objects.requireNonNull(metrics);
64+
this.samplingRate = samplingRate;
5665

5766
jsonLogicNodesCache = cacheTtl != null && cacheSize != null
5867
? SettingsCache.createCache(cacheTtl, cacheSize, 0)
@@ -76,6 +85,7 @@ public PrivacyModule from(PrivacyModuleCreationContext creationContext) {
7685
? SetUtils.emptyIfNull(scope.getSectionsIds()).stream()
7786
.filter(sectionId -> shouldApplyPrivacy(sectionId, moduleConfig))
7887
.map(sectionId -> forConfig(sectionId, normalizeSection, scope.getGppModel(), jsonLogicConfig))
88+
.filter(Objects::nonNull)
7989
.toList()
8090
: Collections.emptyList();
8191

@@ -123,10 +133,19 @@ private PrivacyModule forConfig(int sectionId,
123133
GppModel gppModel,
124134
ObjectNode jsonLogicConfig) {
125135

126-
return new USCustomLogicModule(
127-
jsonLogic,
128-
jsonLogicNode(jsonLogicConfig),
129-
USCustomLogicDataSupplier.of(gppReaderFactory.forSection(sectionId, normalizeSection, gppModel)));
136+
try {
137+
return new USCustomLogicModule(
138+
jsonLogic,
139+
jsonLogicNode(jsonLogicConfig),
140+
USCustomLogicDataSupplier.of(gppReaderFactory.forSection(sectionId, normalizeSection, gppModel)));
141+
} catch (Exception e) {
142+
conditionalLogger.error(
143+
"USCustomLogic creation failed: %s. Config: %s".formatted(e.getMessage(), jsonLogicConfig),
144+
samplingRate);
145+
metrics.updateAlertsMetrics(MetricName.general);
146+
147+
return null;
148+
}
130149
}
131150

132151
private JsonLogicNode jsonLogicNode(ObjectNode jsonLogicConfig) {

src/main/java/org/prebid/server/activity/infrastructure/creator/privacy/usnat/USNatModuleCreator.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
import org.prebid.server.activity.infrastructure.privacy.PrivacySection;
1212
import org.prebid.server.activity.infrastructure.privacy.usnat.USNatModule;
1313
import org.prebid.server.auction.gpp.model.GppContext;
14+
import org.prebid.server.log.ConditionalLogger;
15+
import org.prebid.server.log.Logger;
16+
import org.prebid.server.log.LoggerFactory;
17+
import org.prebid.server.metric.MetricName;
18+
import org.prebid.server.metric.Metrics;
1419
import org.prebid.server.settings.model.activity.privacy.AccountUSNatModuleConfig;
1520

1621
import java.util.List;
@@ -20,15 +25,22 @@
2025

2126
public class USNatModuleCreator implements PrivacyModuleCreator {
2227

28+
private static final Logger logger = LoggerFactory.getLogger(USNatModuleCreator.class);
29+
private static final ConditionalLogger conditionalLogger = new ConditionalLogger(logger);
30+
2331
private static final Set<Integer> ALLOWED_SECTIONS_IDS =
2432
PrivacySection.US_PRIVACY_SECTIONS.stream()
2533
.map(PrivacySection::sectionId)
2634
.collect(Collectors.toSet());
2735

2836
private final USNatGppReaderFactory gppReaderFactory;
37+
private final Metrics metrics;
38+
private final double samplingRate;
2939

30-
public USNatModuleCreator(USNatGppReaderFactory gppReaderFactory) {
40+
public USNatModuleCreator(USNatGppReaderFactory gppReaderFactory, Metrics metrics, double samplingRate) {
3141
this.gppReaderFactory = Objects.requireNonNull(gppReaderFactory);
42+
this.metrics = Objects.requireNonNull(metrics);
43+
this.samplingRate = samplingRate;
3244
}
3345

3446
@Override
@@ -48,6 +60,7 @@ public PrivacyModule from(PrivacyModuleCreationContext creationContext) {
4860
sectionId,
4961
scope.getGppModel(),
5062
moduleConfig.getConfig()))
63+
.filter(Objects::nonNull)
5164
.toList();
5265

5366
return new AndPrivacyModules(innerPrivacyModules);
@@ -70,6 +83,16 @@ private PrivacyModule forSection(Activity activity,
7083
GppModel gppModel,
7184
AccountUSNatModuleConfig.Config config) {
7285

73-
return new USNatModule(activity, gppReaderFactory.forSection(sectionId, gppModel), config);
86+
try {
87+
return new USNatModule(activity, gppReaderFactory.forSection(sectionId, gppModel), config);
88+
} catch (Exception e) {
89+
conditionalLogger.error(
90+
"UsNat privacy module creation failed: %s. Activity: %s. Section: %s. Gpp: %s."
91+
.formatted(e.getMessage(), activity, sectionId, gppModel.encode()),
92+
samplingRate);
93+
metrics.updateAlertsMetrics(MetricName.general);
94+
95+
return null;
96+
}
7497
}
7598
}

src/main/java/org/prebid/server/activity/infrastructure/creator/rule/PrivacyModulesRuleCreator.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
import org.prebid.server.activity.infrastructure.privacy.SkippedPrivacyModule;
1111
import org.prebid.server.activity.infrastructure.rule.AndRule;
1212
import org.prebid.server.activity.infrastructure.rule.Rule;
13+
import org.prebid.server.log.Logger;
14+
import org.prebid.server.log.LoggerFactory;
15+
import org.prebid.server.metric.MetricName;
16+
import org.prebid.server.metric.Metrics;
1317
import org.prebid.server.settings.model.activity.privacy.AccountPrivacyModuleConfig;
1418
import org.prebid.server.settings.model.activity.rule.AccountActivityPrivacyModulesRuleConfig;
1519

@@ -23,15 +27,19 @@
2327

2428
public class PrivacyModulesRuleCreator extends AbstractRuleCreator<AccountActivityPrivacyModulesRuleConfig> {
2529

30+
private static final Logger logger = LoggerFactory.getLogger(PrivacyModulesRuleCreator.class);
31+
2632
private static final String WILDCARD = "*";
2733

2834
private final Map<PrivacyModuleQualifier, PrivacyModuleCreator> privacyModulesCreators;
35+
private final Metrics metrics;
2936

30-
public PrivacyModulesRuleCreator(List<PrivacyModuleCreator> privacyModulesCreators) {
37+
public PrivacyModulesRuleCreator(List<PrivacyModuleCreator> privacyModulesCreators, Metrics metrics) {
3138
super(AccountActivityPrivacyModulesRuleConfig.class);
3239

3340
this.privacyModulesCreators = Objects.requireNonNull(privacyModulesCreators).stream()
3441
.collect(Collectors.toMap(PrivacyModuleCreator::qualifier, UnaryOperator.identity()));
42+
this.metrics = Objects.requireNonNull(metrics);
3543
}
3644

3745
@Override
@@ -46,6 +54,7 @@ protected Rule fromConfiguration(AccountActivityPrivacyModulesRuleConfig ruleCon
4654
.filter(qualifier -> !creationContext.isUsed(qualifier))
4755
.peek(creationContext::use)
4856
.map(qualifier -> createPrivacyModule(qualifier, creationContext))
57+
.filter(Objects::nonNull)
4958
.toList();
5059

5160
return new AndRule(privacyModules);
@@ -87,8 +96,16 @@ private PrivacyModule createPrivacyModule(PrivacyModuleQualifier privacyModuleQu
8796
return new SkippedPrivacyModule(privacyModuleQualifier);
8897
}
8998

90-
return privacyModulesCreators.get(privacyModuleQualifier)
91-
.from(creationContext(privacyModuleQualifier, creationContext));
99+
try {
100+
return privacyModulesCreators.get(privacyModuleQualifier)
101+
.from(creationContext(privacyModuleQualifier, creationContext));
102+
} catch (Exception e) {
103+
logger.error("PrivacyModule %s creation failed: %s."
104+
.formatted(privacyModuleQualifier, e.getMessage()));
105+
metrics.updateAlertsMetrics(MetricName.general);
106+
107+
return null;
108+
}
92109
}
93110

94111
private static PrivacyModuleCreationContext creationContext(PrivacyModuleQualifier privacyModuleQualifier,

src/main/java/org/prebid/server/spring/config/ActivityInfrastructureConfiguration.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@ USNatGppReaderFactory usNatGppReaderFactory() {
3535
}
3636

3737
@Bean
38-
USNatModuleCreator usNatModuleCreator(USNatGppReaderFactory gppReaderFactory) {
39-
return new USNatModuleCreator(gppReaderFactory);
38+
USNatModuleCreator usNatModuleCreator(USNatGppReaderFactory gppReaderFactory,
39+
Metrics metrics,
40+
@Value("${logging.sampling-rate:0.01}") double logSamplingRate) {
41+
42+
return new USNatModuleCreator(gppReaderFactory, metrics, logSamplingRate);
4043
}
4144
}
4245

@@ -54,9 +57,16 @@ USCustomLogicModuleCreator usCustomLogicModuleCreator(
5457
JsonLogic jsonLogic,
5558
@Value("${settings.in-memory-cache.ttl-seconds:#{null}}") Integer ttlSeconds,
5659
@Value("${settings.in-memory-cache.cache-size:#{null}}") Integer cacheSize,
57-
Metrics metrics) {
58-
59-
return new USCustomLogicModuleCreator(gppReaderFactory, jsonLogic, ttlSeconds, cacheSize, metrics);
60+
Metrics metrics,
61+
@Value("${logging.sampling-rate:0.01}") double logSamplingRate) {
62+
63+
return new USCustomLogicModuleCreator(
64+
gppReaderFactory,
65+
jsonLogic,
66+
ttlSeconds,
67+
cacheSize,
68+
metrics,
69+
logSamplingRate);
6070
}
6171
}
6272
}
@@ -65,13 +75,15 @@ USCustomLogicModuleCreator usCustomLogicModuleCreator(
6575
static class RuleCreatorConfiguration {
6676

6777
@Bean
68-
ConditionsRuleCreator geoRuleCreator() {
78+
ConditionsRuleCreator conditionsRuleCreator() {
6979
return new ConditionsRuleCreator();
7080
}
7181

7282
@Bean
73-
PrivacyModulesRuleCreator privacyModulesRuleCreator(List<PrivacyModuleCreator> privacyModuleCreators) {
74-
return new PrivacyModulesRuleCreator(privacyModuleCreators);
83+
PrivacyModulesRuleCreator privacyModulesRuleCreator(List<PrivacyModuleCreator> privacyModuleCreators,
84+
Metrics metrics) {
85+
86+
return new PrivacyModulesRuleCreator(privacyModuleCreators, metrics);
7587
}
7688
}
7789

src/test/java/org/prebid/server/activity/infrastructure/creator/privacy/uscustomlogic/USCustomLogicModuleCreatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void setUp() {
6363
.willReturn(new USNationalGppReader(null));
6464
given(jsonLogic.parse(any())).willReturn(JsonLogicBoolean.TRUE);
6565

66-
target = new USCustomLogicModuleCreator(gppReaderFactory, jsonLogic, null, null, metrics);
66+
target = new USCustomLogicModuleCreator(gppReaderFactory, jsonLogic, null, null, metrics, 0);
6767
}
6868

6969
@Test

src/test/java/org/prebid/server/activity/infrastructure/creator/privacy/usnat/USNatModuleCreatorTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.prebid.server.activity.infrastructure.privacy.usnat.reader.USNationalGppReader;
1313
import org.prebid.server.activity.infrastructure.rule.Rule;
1414
import org.prebid.server.auction.gpp.model.GppContextCreator;
15+
import org.prebid.server.metric.Metrics;
1516
import org.prebid.server.settings.model.activity.privacy.AccountUSNatModuleConfig;
1617

1718
import java.util.List;
@@ -35,13 +36,16 @@ public class USNatModuleCreatorTest {
3536
@Mock(strictness = LENIENT)
3637
private USNatGppReaderFactory gppReaderFactory;
3738

39+
@Mock(strictness = LENIENT)
40+
private Metrics metrics;
41+
3842
private USNatModuleCreator target;
3943

4044
@BeforeEach
4145
public void setUp() {
4246
given(gppReaderFactory.forSection(anyInt(), any())).willReturn(new USNationalGppReader(null));
4347

44-
target = new USNatModuleCreator(gppReaderFactory);
48+
target = new USNatModuleCreator(gppReaderFactory, metrics, 0);
4549
}
4650

4751
@Test

src/test/java/org/prebid/server/activity/infrastructure/creator/rule/PrivacyModulesRuleCreatorTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.prebid.server.activity.infrastructure.privacy.PrivacyModuleQualifier;
1212
import org.prebid.server.activity.infrastructure.privacy.TestPrivacyModule;
1313
import org.prebid.server.activity.infrastructure.rule.Rule;
14+
import org.prebid.server.metric.Metrics;
1415
import org.prebid.server.settings.model.activity.privacy.AccountPrivacyModuleConfig;
1516
import org.prebid.server.settings.model.activity.privacy.AccountUSNatModuleConfig;
1617
import org.prebid.server.settings.model.activity.rule.AccountActivityPrivacyModulesRuleConfig;
@@ -24,20 +25,24 @@
2425
import static org.assertj.core.api.Assertions.assertThat;
2526
import static org.mockito.ArgumentMatchers.eq;
2627
import static org.mockito.BDDMockito.given;
28+
import static org.mockito.Mock.Strictness.LENIENT;
2729

2830
@ExtendWith(MockitoExtension.class)
2931
public class PrivacyModulesRuleCreatorTest {
3032

3133
@Mock
3234
private PrivacyModuleCreator privacyModuleCreator;
3335

36+
@Mock(strictness = LENIENT)
37+
private Metrics metrics;
38+
3439
private PrivacyModulesRuleCreator target;
3540

3641
@BeforeEach
3742
public void setUp() {
3843
given(privacyModuleCreator.qualifier()).willReturn(PrivacyModuleQualifier.US_NAT);
3944

40-
target = new PrivacyModulesRuleCreator(singletonList(privacyModuleCreator));
45+
target = new PrivacyModulesRuleCreator(singletonList(privacyModuleCreator), metrics);
4146
}
4247

4348
@Test
@@ -177,7 +182,7 @@ public void fromShouldDisableSkippedPrivacyModule() {
177182
@Test
178183
public void fromShouldSkipPrivacyModuleWithoutCreator() {
179184
// given
180-
target = new PrivacyModulesRuleCreator(emptyList());
185+
target = new PrivacyModulesRuleCreator(emptyList(), metrics);
181186

182187
final AccountActivityPrivacyModulesRuleConfig config = AccountActivityPrivacyModulesRuleConfig.of(
183188
singletonList(PrivacyModuleQualifier.US_NAT.moduleName()));

0 commit comments

Comments
 (0)