Skip to content

Commit 2f92932

Browse files
authored
Revert "Multiple Bidder Codes" (#3854)
1 parent 4fcaeef commit 2f92932

File tree

389 files changed

+766
-4319
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

389 files changed

+766
-4319
lines changed

extra/modules/ortb2-blocking/src/main/java/org/prebid/server/hooks/modules/ortb2/blocking/v1/Ortb2BlockingBidderRequestHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.iab.openrtb.request.BidRequest;
44
import io.vertx.core.Future;
5-
import org.prebid.server.auction.aliases.BidderAliases;
5+
import org.prebid.server.auction.BidderAliases;
66
import org.prebid.server.auction.versionconverter.OrtbVersion;
77
import org.prebid.server.bidder.BidderCatalog;
88
import org.prebid.server.hooks.execution.v1.InvocationResultImpl;

src/main/java/org/prebid/server/auction/BidResponseCreator.java

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.commons.lang3.BooleanUtils;
2424
import org.apache.commons.lang3.ObjectUtils;
2525
import org.apache.commons.lang3.StringUtils;
26-
import org.prebid.server.auction.aliases.BidderAliases;
2726
import org.prebid.server.auction.categorymapping.CategoryMappingService;
2827
import org.prebid.server.auction.model.AuctionContext;
2928
import org.prebid.server.auction.model.AuctionParticipation;
@@ -432,15 +431,9 @@ private List<BidderResponseInfo> toBidderResponseInfos(CategoryMappingResult cat
432431
final BidderSeatBid seatBid = bidderResponse.getSeatBid();
433432

434433
for (final BidderBid bidderBid : seatBid.getBids()) {
435-
final BidInfo bidInfo = toBidInfo(
436-
bidderBid.getBid(),
437-
bidderBid.getType(),
438-
bidderBid.getSeat(),
439-
imps,
440-
bidder,
441-
categoryMappingResult,
442-
cacheInfo,
443-
account);
434+
final Bid bid = bidderBid.getBid();
435+
final BidType type = bidderBid.getType();
436+
final BidInfo bidInfo = toBidInfo(bid, type, imps, bidder, categoryMappingResult, cacheInfo, account);
444437
bidInfos.add(bidInfo);
445438
}
446439

@@ -460,7 +453,6 @@ private List<BidderResponseInfo> toBidderResponseInfos(CategoryMappingResult cat
460453

461454
private BidInfo toBidInfo(Bid bid,
462455
BidType type,
463-
String seat,
464456
List<Imp> imps,
465457
String bidder,
466458
CategoryMappingResult categoryMappingResult,
@@ -472,7 +464,6 @@ private BidInfo toBidInfo(Bid bid,
472464
.bid(bid)
473465
.bidType(type)
474466
.bidder(bidder)
475-
.seat(seat)
476467
.correspondingImp(correspondingImp)
477468
.ttl(resolveTtl(bid, type, correspondingImp, cacheInfo, account))
478469
.vastTtl(type == BidType.video ? resolveVastTtl(bid, correspondingImp, cacheInfo, account) : null)
@@ -770,16 +761,18 @@ private static List<BidInfo> injectTargeting(List<BidInfo> bidderImpIdBidInfos,
770761
final int multiBidSize = bidderImpIdBidInfos.size();
771762
for (int i = 0; i < multiBidSize; i++) {
772763
// first bid have the highest value and can't be extra bid
773-
final String targetingBidderCode = targetingCode(bidder, bidderCodePrefix, i);
774-
final BidInfo bidInfo = bidderImpIdBidInfos.get(i);
764+
final boolean isFirstBid = i == 0;
765+
final String targetingBidderCode = isFirstBid
766+
? bidder
767+
: bidderCodePrefix == null ? null : bidderCodePrefix + (i + 1);
775768

769+
final BidInfo bidInfo = bidderImpIdBidInfos.get(i);
776770
final TargetingInfo targetingInfo = TargetingInfo.builder()
777771
.isTargetingEnabled(targetingBidderCode != null)
778772
.isBidderWinningBid(winningBidsByBidder.contains(bidInfo))
779773
.isWinningBid(winningBids.contains(bidInfo))
780774
.isAddTargetBidderCode(targetingBidderCode != null && multiBidSize > 1)
781775
.bidderCode(targetingBidderCode)
782-
.seat(targetingCode(bidInfo.getSeat(), bidderCodePrefix, i))
783776
.build();
784777

785778
final BidInfo modifiedBidInfo = bidInfo.toBuilder().targetingInfo(targetingInfo).build();
@@ -789,14 +782,6 @@ private static List<BidInfo> injectTargeting(List<BidInfo> bidderImpIdBidInfos,
789782
return result;
790783
}
791784

792-
private static String targetingCode(String base, String prefix, int i) {
793-
if (i == 0) {
794-
return base;
795-
}
796-
797-
return prefix != null ? prefix + (i + 1) : null;
798-
}
799-
800785
/**
801786
* Returns {@link ExtBidResponse} object, populated with response time, errors and debug info (if requested)
802787
* from all bidders.
@@ -1444,6 +1429,12 @@ private SeatBid toSeatBid(List<BidInfo> bidInfos,
14441429
Map<String, List<ExtBidderError>> bidErrors,
14451430
Map<String, List<ExtBidderError>> bidWarnings) {
14461431

1432+
final String bidder = bidInfos.stream()
1433+
.map(BidInfo::getBidder)
1434+
.findFirst()
1435+
// Should never occur
1436+
.orElseThrow(() -> new IllegalArgumentException("Bidder was not defined for bidInfo"));
1437+
14471438
final List<Bid> bids = bidInfos.stream()
14481439
.map(bidInfo -> injectAdmWithCacheInfo(
14491440
bidInfo,
@@ -1460,14 +1451,8 @@ private SeatBid toSeatBid(List<BidInfo> bidInfos,
14601451
.filter(Objects::nonNull)
14611452
.toList();
14621453

1463-
final String seat = bidInfos.stream()
1464-
.map(BidInfo::getSeat)
1465-
.findFirst()
1466-
// Should never occur
1467-
.orElseThrow(() -> new IllegalArgumentException("BidderCode was not defined for bidInfo"));
1468-
14691454
return SeatBid.builder()
1470-
.seat(seat)
1455+
.seat(bidder)
14711456
.bid(bids)
14721457
.group(0) // prebid cannot support roadblocking
14731458
.build();
@@ -1527,16 +1512,16 @@ private Bid toBid(BidInfo bidInfo,
15271512
final String videoCacheId = cacheInfo != null ? cacheInfo.getVideoCacheId() : null;
15281513

15291514
final Map<String, String> targetingKeywords;
1515+
final String bidderCode = targetingInfo.getBidderCode();
15301516
if (shouldIncludeTargetingInResponse(targeting, bidInfo.getTargetingInfo())) {
15311517
final TargetingKeywordsCreator keywordsCreator = resolveKeywordsCreator(
15321518
bidType, targeting, bidRequest, account, bidWarnings);
15331519

15341520
final boolean isWinningBid = targetingInfo.isWinningBid();
1535-
final String seat = targetingInfo.getSeat();
15361521
final String categoryDuration = bidInfo.getCategory();
15371522
targetingKeywords = keywordsCreator != null
15381523
? keywordsCreator.makeFor(
1539-
bid, seat, isWinningBid, cacheId, bidType.getName(), videoCacheId, categoryDuration)
1524+
bid, bidderCode, isWinningBid, cacheId, bidType.getName(), videoCacheId, categoryDuration)
15401525
: null;
15411526
} else {
15421527
targetingKeywords = null;
@@ -1554,7 +1539,7 @@ private Bid toBid(BidInfo bidInfo,
15541539
.map(ExtBidPrebid::toBuilder)
15551540
.orElseGet(ExtBidPrebid::builder)
15561541
.targeting(MapUtils.isNotEmpty(targetingKeywords) ? targetingKeywords : null)
1557-
.targetBidderCode(targetingInfo.isAddTargetBidderCode() ? targetingInfo.getBidderCode() : null)
1542+
.targetBidderCode(targetingInfo.isAddTargetBidderCode() ? bidderCode : null)
15581543
.dealTierSatisfied(dealsTierSatisfied)
15591544
.cache(cache)
15601545
.passThrough(extractPassThrough(bidInfo.getCorrespondingImp()))
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.prebid.server.auction;
2+
3+
import org.apache.commons.collections4.MapUtils;
4+
import org.apache.commons.lang3.StringUtils;
5+
import org.prebid.server.bidder.BidderCatalog;
6+
7+
import java.util.Map;
8+
import java.util.Objects;
9+
10+
/**
11+
* Represents aliases configured for bidders - configuration might come in OpenRTB request but not limited to it.
12+
*/
13+
public class BidderAliases {
14+
15+
private final Map<String, String> aliasToBidder;
16+
17+
private final Map<String, Integer> aliasToVendorId;
18+
19+
private final BidderCatalog bidderCatalog;
20+
21+
private BidderAliases(Map<String, String> aliasToBidder,
22+
Map<String, Integer> aliasToVendorId,
23+
BidderCatalog bidderCatalog) {
24+
25+
this.aliasToBidder = MapUtils.emptyIfNull(aliasToBidder);
26+
this.aliasToVendorId = MapUtils.emptyIfNull(aliasToVendorId);
27+
this.bidderCatalog = Objects.requireNonNull(bidderCatalog);
28+
}
29+
30+
public static BidderAliases of(Map<String, String> aliasToBidder,
31+
Map<String, Integer> aliasToVendorId,
32+
BidderCatalog bidderCatalog) {
33+
34+
return new BidderAliases(aliasToBidder, aliasToVendorId, bidderCatalog);
35+
}
36+
37+
public boolean isAliasDefined(String alias) {
38+
return aliasToBidder.containsKey(alias);
39+
}
40+
41+
public String resolveBidder(String aliasOrBidder) {
42+
return bidderCatalog.isValidName(aliasOrBidder)
43+
? aliasOrBidder
44+
: aliasToBidder.getOrDefault(aliasOrBidder, aliasOrBidder);
45+
}
46+
47+
public boolean isSame(String bidder1, String bidder2) {
48+
return StringUtils.equalsIgnoreCase(resolveBidder(bidder1), resolveBidder(bidder2));
49+
}
50+
51+
public Integer resolveAliasVendorId(String alias) {
52+
final Integer vendorId = resolveAliasVendorIdViaCatalog(alias);
53+
return vendorId == null ? aliasToVendorId.get(alias) : vendorId;
54+
}
55+
56+
private Integer resolveAliasVendorIdViaCatalog(String alias) {
57+
final String bidderName = resolveBidder(alias);
58+
return bidderCatalog.isActive(bidderName) ? bidderCatalog.vendorIdByName(bidderName) : null;
59+
}
60+
}

src/main/java/org/prebid/server/auction/BidsAdjuster.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.iab.openrtb.request.BidRequest;
44
import com.iab.openrtb.response.Bid;
5-
import org.prebid.server.auction.aliases.BidderAliases;
65
import org.prebid.server.auction.model.AuctionContext;
76
import org.prebid.server.auction.model.AuctionParticipation;
87
import org.prebid.server.auction.model.BidderResponse;
@@ -45,6 +44,7 @@ public List<AuctionParticipation> validateAndAdjustBids(List<AuctionParticipatio
4544

4645
return auctionParticipations.stream()
4746
.map(auctionParticipation -> validBidderResponse(auctionParticipation, auctionContext, aliases))
47+
4848
.map(auctionParticipation -> bidAdjustmentsProcessor.enrichWithAdjustedBids(
4949
auctionParticipation,
5050
auctionContext.getBidRequest(),

src/main/java/org/prebid/server/auction/ExchangeService.java

Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import org.prebid.server.activity.infrastructure.payload.ActivityInvocationPayload;
2929
import org.prebid.server.activity.infrastructure.payload.impl.ActivityInvocationPayloadImpl;
3030
import org.prebid.server.activity.infrastructure.payload.impl.BidRequestActivityInvocationPayload;
31-
import org.prebid.server.auction.aliases.AlternateBidderCodesConfig;
32-
import org.prebid.server.auction.aliases.BidderAliases;
3331
import org.prebid.server.auction.mediatypeprocessor.MediaTypeProcessingResult;
3432
import org.prebid.server.auction.mediatypeprocessor.MediaTypeProcessor;
3533
import org.prebid.server.auction.model.AuctionContext;
@@ -81,7 +79,6 @@
8179
import org.prebid.server.proto.openrtb.ext.request.ExtDooh;
8280
import org.prebid.server.proto.openrtb.ext.request.ExtRequest;
8381
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid;
84-
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidAlternateBidderCodes;
8582
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidBidderConfig;
8683
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidCache;
8784
import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidData;
@@ -91,7 +88,6 @@
9188
import org.prebid.server.proto.openrtb.ext.request.ExtRequestTargeting;
9289
import org.prebid.server.proto.openrtb.ext.request.ExtSite;
9390
import org.prebid.server.proto.openrtb.ext.request.ExtUser;
94-
import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidMeta;
9591
import org.prebid.server.settings.model.Account;
9692
import org.prebid.server.util.HttpUtil;
9793
import org.prebid.server.util.ListUtil;
@@ -119,7 +115,6 @@ public class ExchangeService {
119115
private static final ConditionalLogger conditionalLogger = new ConditionalLogger(logger);
120116

121117
private static final String PREBID_EXT = "prebid";
122-
private static final String PREBID_META_EXT = "meta";
123118
private static final String BIDDER_EXT = "bidder";
124119
private static final String TID_EXT = "tid";
125120
private static final String ALL_BIDDERS_CONFIG = "*";
@@ -238,7 +233,7 @@ private Future<AuctionContext> runAuction(AuctionContext receivedContext) {
238233
final MetricName requestTypeMetric = receivedContext.getRequestTypeMetric();
239234

240235
final List<SeatBid> storedAuctionResponses = new ArrayList<>();
241-
final BidderAliases aliases = aliases(bidRequest, account);
236+
final BidderAliases aliases = aliases(bidRequest);
242237
final BidRequestCacheInfo cacheInfo = bidRequestCacheInfo(bidRequest);
243238
final Map<String, MultiBidConfig> bidderToMultiBid = bidderToMultiBids(bidRequest, debugWarnings);
244239
receivedContext.getBidRejectionTrackers().putAll(makeBidRejectionTrackers(bidRequest, aliases));
@@ -289,19 +284,11 @@ private Future<AuctionContext> runAuction(AuctionContext receivedContext) {
289284
.map(context::with));
290285
}
291286

292-
private BidderAliases aliases(BidRequest bidRequest, Account account) {
287+
private BidderAliases aliases(BidRequest bidRequest) {
293288
final ExtRequestPrebid prebid = PbsUtil.extRequestPrebid(bidRequest);
294289
final Map<String, String> aliases = prebid != null ? prebid.getAliases() : null;
295290
final Map<String, Integer> aliasgvlids = prebid != null ? prebid.getAliasgvlids() : null;
296-
final ExtRequestPrebidAlternateBidderCodes alternateBidderCodes = prebid != null
297-
? prebid.getAlternateBidderCodes()
298-
: null;
299-
300-
final AlternateBidderCodesConfig alternateBidderCodesConfig = ObjectUtils.defaultIfNull(
301-
alternateBidderCodes,
302-
account.getAlternateBidderCodes());
303-
304-
return BidderAliases.of(aliases, aliasgvlids, bidderCatalog, alternateBidderCodesConfig);
291+
return BidderAliases.of(aliases, aliasgvlids, bidderCatalog);
305292
}
306293

307294
private static ExtRequestTargeting targeting(BidRequest bidRequest) {
@@ -1238,43 +1225,9 @@ private Future<BidderResponse> requestBids(BidderRequest bidderRequest,
12381225
requestHeaders,
12391226
aliases,
12401227
debugResolver.resolveDebugForBidder(auctionContext, resolvedBidderName)))
1241-
.map(seatBid -> populateBidderCode(seatBid, bidderName, resolvedBidderName))
12421228
.map(seatBid -> BidderResponse.of(bidderName, seatBid, responseTime(bidderRequestStartTime)));
12431229
}
12441230

1245-
private BidderSeatBid populateBidderCode(BidderSeatBid seatBid, String bidderName, String resolvedBidderName) {
1246-
return seatBid.with(seatBid.getBids().stream()
1247-
.map(bidderBid -> bidderBid.toBuilder()
1248-
.seat(ObjectUtils.defaultIfNull(bidderBid.getSeat(), bidderName))
1249-
.bid(bidderBid.getBid().toBuilder()
1250-
.ext(prepareBidExt(
1251-
bidderBid.getBid().getExt(),
1252-
bidderCatalog.configuredName(resolvedBidderName)))
1253-
.build())
1254-
.build())
1255-
.toList());
1256-
}
1257-
1258-
private ObjectNode prepareBidExt(ObjectNode bidExt, String bidderName) {
1259-
final ObjectNode updatedBidExt = bidExt != null ? bidExt : mapper.mapper().createObjectNode();
1260-
1261-
final ObjectNode extPrebid = objectNodeFromOrNew(updatedBidExt, PREBID_EXT);
1262-
final ObjectNode extPrebidMeta = objectNodeFromOrNew(extPrebid, PREBID_META_EXT);
1263-
1264-
final ObjectNode newData = mapper.mapper().valueToTree(
1265-
ExtBidPrebidMeta.builder().adapterCode(bidderName).build());
1266-
extPrebidMeta.setAll(newData);
1267-
1268-
return updatedBidExt;
1269-
}
1270-
1271-
private ObjectNode objectNodeFromOrNew(ObjectNode parent, String key) {
1272-
final JsonNode childNode = parent.get(key);
1273-
return childNode == null || !childNode.isObject()
1274-
? parent.putObject(key)
1275-
: (ObjectNode) childNode;
1276-
}
1277-
12781231
private BidRequest adjustTmax(BidRequest bidRequest,
12791232
long startTime,
12801233
int adjustmentFactor,

src/main/java/org/prebid/server/auction/ImpAdjuster.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.fasterxml.jackson.databind.node.IntNode;
55
import com.fasterxml.jackson.databind.node.ObjectNode;
66
import com.iab.openrtb.request.Imp;
7-
import org.prebid.server.auction.aliases.BidderAliases;
87
import org.prebid.server.json.JacksonMapper;
98
import org.prebid.server.json.JsonMerger;
109
import org.prebid.server.validation.ImpValidator;

src/main/java/org/prebid/server/auction/StoredResponseProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ private BidderSeatBid makeBidderSeatBid(BidderSeatBid bidderSeatBid,
428428
: DEFAULT_BID_CURRENCY;
429429
final List<BidderBid> bidderBids = seatBid != null
430430
? seatBid.getBid().stream()
431-
.map(bid -> makeBidderBid(bid, bidCurrency, seatBid.getSeat(), impIdToBidType))
431+
.map(bid -> makeBidderBid(bid, bidCurrency, impIdToBidType))
432432
.collect(Collectors.toCollection(ArrayList::new))
433433
: new ArrayList<>();
434434
if (nonNullBidderSeatBid) {
@@ -439,8 +439,8 @@ private BidderSeatBid makeBidderSeatBid(BidderSeatBid bidderSeatBid,
439439
: BidderSeatBid.of(bidderBids);
440440
}
441441

442-
private BidderBid makeBidderBid(Bid bid, String bidCurrency, String seat, Map<String, BidType> impIdToBidType) {
443-
return BidderBid.of(bid, getBidType(bid.getExt(), impIdToBidType.get(bid.getImpid())), seat, bidCurrency);
442+
private BidderBid makeBidderBid(Bid bid, String bidCurrency, Map<String, BidType> impIdToBidType) {
443+
return BidderBid.of(bid, getBidType(bid.getExt(), impIdToBidType.get(bid.getImpid())), bidCurrency);
444444
}
445445

446446
private BidType getBidType(ObjectNode bidExt, BidType bidType) {

src/main/java/org/prebid/server/auction/UidUpdater.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.iab.openrtb.request.User;
44
import org.apache.commons.collections4.map.CaseInsensitiveMap;
55
import org.apache.commons.lang3.StringUtils;
6-
import org.prebid.server.auction.aliases.BidderAliases;
76
import org.prebid.server.auction.model.AuctionContext;
87
import org.prebid.server.bidder.BidderCatalog;
98
import org.prebid.server.cookie.UidsCookie;

0 commit comments

Comments
 (0)