public class CdbRequestFactory
extends java.lang.Object
| Constructor and Description |
|---|
CdbRequestFactory(android.content.Context context,
java.lang.String criteoPublisherId,
DeviceInfo deviceInfo,
AdvertisingInfo advertisingInfo,
UserPrivacyUtil userPrivacyUtil,
UniqueIdGenerator uniqueIdGenerator,
BuildConfigWrapper buildConfigWrapper,
com.criteo.publisher.integration.IntegrationRegistry integrationRegistry,
com.criteo.publisher.context.ContextProvider contextProvider,
com.criteo.publisher.context.UserDataHolder userDataHolder) |
| Modifier and Type | Method and Description |
|---|---|
CdbRequest |
createRequest(java.util.List<com.criteo.publisher.model.CacheAdUnit> requestedAdUnits,
ContextData contextData) |
java.util.concurrent.Future<java.lang.String> |
getUserAgent() |
java.util.Map<java.lang.String,java.lang.Object> |
mergeToNestedMap(java.util.Map<java.lang.String,java.lang.Object>... flattenMaps)
Transform given maps in a nested structure and merge them
|
public CdbRequestFactory(@NonNull
android.content.Context context,
@NonNull
java.lang.String criteoPublisherId,
@NonNull
DeviceInfo deviceInfo,
@NonNull
AdvertisingInfo advertisingInfo,
@NonNull
UserPrivacyUtil userPrivacyUtil,
@NonNull
UniqueIdGenerator uniqueIdGenerator,
@NonNull
BuildConfigWrapper buildConfigWrapper,
@NonNull
com.criteo.publisher.integration.IntegrationRegistry integrationRegistry,
@NonNull
com.criteo.publisher.context.ContextProvider contextProvider,
@NonNull
com.criteo.publisher.context.UserDataHolder userDataHolder)
@NonNull public CdbRequest createRequest(@NonNull java.util.List<com.criteo.publisher.model.CacheAdUnit> requestedAdUnits, @NonNull ContextData contextData)
@NonNull public java.util.concurrent.Future<java.lang.String> getUserAgent()
@NonNull @SafeVarargs public final java.util.Map<java.lang.String,java.lang.Object> mergeToNestedMap(java.util.Map<java.lang.String,java.lang.Object>... flattenMaps)
The keys of the maps determine the nested structure. A "." (dot) represent a nested level, such as dot notation in
Java. For instance the entry "a.b.c" -> "value" represents {a: {b: { c: "value"}}}
The merge keeps the first elements and drops the next elements with the same key or with an incompatible structure.
The merge policy uses the iteration order of the keys and the order of given maps. So it is recommended to give map
with a deterministic iteration order such as SortedMap or LinkedHashMap. Here
is an example of merge:
// First map
a.a.a = 1337 // (1)
a.c.b = "..."
a.a = 1 // Skipped because a.a is defined as a node at (1)
a.a.a.a = 2 // Skipped because a.a.a is defined as a leaf at (1)
// Second map
a.a.a = 42 // Skipped because a.a.a is already defined at (1)
a.b = "foo"
a.c.a = ["foo", "bar"]
// Gives
{
a: {
a: {
a: 1337
},
c: {
b: "...",
a: ["foo", "bar"]
}
},
b: "foo"
}
flattenMaps - maps to merge into a nested structure