Skip to content

Commit 6c2f8ab

Browse files
Merge pull request #2996 from DataDog/typo/flags-of-module
[flags] feat: scaffold openfeature provider module Co-authored-by: typotter <[email protected]>
2 parents ac6a9f5 + 2e65f37 commit 6c2f8ab

File tree

11 files changed

+181
-0
lines changed

11 files changed

+181
-0
lines changed

LICENSE-3rdparty.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import,com.squareup.moshi,Apache-2.0,"Copyright 2013 Square, Inc"
6161
import,com.squareup.sqldelight,Apache-2.0,"Copyright 2016 Square, Inc"
6262
import,com.fasterxml.jackson,Apache-2.0,"Copyright 2020 Datadog, Inc."
6363
import,com.datadoghq,Apache-2.0,"Copyright 2017 Datadog, Inc"
64+
import,dev.openfeature,Apache-2.0,Copyright 2022 The OpenFeature Authors
6465
import,io.coil-kt,Apache-2.0,Copyright 2021 Coil Contributors
6566
import,io.opentelemetry,Apache-2.0,Copyright 2019 The OpenTelemetry Authors
6667
import,io.opentracing,Apache-2.0,Copyright 2016-2017 The OpenTracing Authors

ci/pipelines/default-pipeline.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ analysis:detekt-custom:
112112
- ./gradlew :features:dd-sdk-android-trace:customDetektRules
113113
- ./gradlew :features:dd-sdk-android-trace-otel:customDetektRules
114114
- ./gradlew :features:dd-sdk-android-webview:customDetektRules
115+
- ./gradlew :features:dd-sdk-android-flags-openfeature:customDetektRules
115116
- ./gradlew :integrations:dd-sdk-android-coil:customDetektRules
116117
- ./gradlew :integrations:dd-sdk-android-compose:customDetektRules
117118
- ./gradlew :integrations:dd-sdk-android-fresco:customDetektRules
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/build
2+
*.iml
3+
.gradle
4+
/local.properties
5+
.DS_Store
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class com.datadog.android.flags.openfeature.DatadogFlagsProvider
2+
fun helloWorld(): String
3+
companion object
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
public final class com/datadog/android/flags/openfeature/DatadogFlagsProvider {
2+
public static final field Companion Lcom/datadog/android/flags/openfeature/DatadogFlagsProvider$Companion;
3+
public fun <init> ()V
4+
public final fun helloWorld ()Ljava/lang/String;
5+
}
6+
7+
public final class com/datadog/android/flags/openfeature/DatadogFlagsProvider$Companion {
8+
}
9+
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
7+
import com.datadog.gradle.config.androidLibraryConfig
8+
import com.datadog.gradle.config.dependencyUpdateConfig
9+
import com.datadog.gradle.config.detektCustomConfig
10+
import com.datadog.gradle.config.javadocConfig
11+
import com.datadog.gradle.config.junitConfig
12+
import com.datadog.gradle.config.kotlinConfig
13+
import com.datadog.gradle.config.publishingConfig
14+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
15+
16+
plugins {
17+
// Build
18+
id("com.android.library")
19+
kotlin("android")
20+
21+
// Publish
22+
`maven-publish`
23+
signing
24+
id("org.jetbrains.dokka-javadoc")
25+
26+
// Analysis tools
27+
id("com.github.ben-manes.versions")
28+
29+
// Tests
30+
id("de.mobilej.unmock")
31+
id("org.jetbrains.kotlinx.kover")
32+
33+
// Internal Generation
34+
id("com.datadoghq.dependency-license")
35+
id("apiSurface")
36+
id("transitiveDependencies")
37+
id("verificationXml")
38+
id("binary-compatibility-validator")
39+
}
40+
41+
android {
42+
namespace = "com.datadog.android.flags.openfeature"
43+
}
44+
45+
dependencies {
46+
// datadog
47+
api(project(":dd-sdk-android-core"))
48+
api(project(":features:dd-sdk-android-flags"))
49+
implementation(project(":dd-sdk-android-internal"))
50+
51+
// OpenFeature SDK
52+
api(libs.openFeatureKotlinSdk)
53+
54+
implementation(libs.kotlin)
55+
implementation(libs.androidXAnnotation)
56+
57+
testImplementation(project(":tools:unit")) {
58+
attributes {
59+
attribute(
60+
com.android.build.api.attributes.ProductFlavorAttr.of("platform"),
61+
objects.named("jvm")
62+
)
63+
}
64+
}
65+
testImplementation(libs.bundles.jUnit5)
66+
testImplementation(libs.bundles.testTools)
67+
unmock(libs.robolectric)
68+
}
69+
70+
unMock {
71+
keepStartingWith("org.json")
72+
}
73+
74+
kotlinConfig(jvmBytecodeTarget = JvmTarget.JVM_11)
75+
androidLibraryConfig()
76+
junitConfig()
77+
javadocConfig()
78+
dependencyUpdateConfig()
79+
publishingConfig(
80+
"OpenFeature Provider integration for the Datadog Feature Flags " +
81+
"library for Android applications."
82+
)
83+
detektCustomConfig()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.android.flags.openfeature
8+
9+
/**
10+
* OpenFeature Provider implementation backed by Datadog Feature Flags.
11+
*/
12+
class DatadogFlagsProvider {
13+
14+
/**
15+
* Simple hello world method so the module is not empty.
16+
*
17+
* @return A greeting message
18+
*/
19+
fun helloWorld(): String = GREETING
20+
21+
companion object {
22+
private const val GREETING = "Hello from DatadogFlagsProvider!"
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.android.flags.openfeature
8+
9+
import com.datadog.tools.unit.forge.BaseConfigurator
10+
import fr.xgouchet.elmyr.junit5.ForgeConfiguration
11+
import fr.xgouchet.elmyr.junit5.ForgeExtension
12+
import org.assertj.core.api.Assertions.assertThat
13+
import org.junit.jupiter.api.BeforeEach
14+
import org.junit.jupiter.api.Test
15+
import org.junit.jupiter.api.extension.ExtendWith
16+
import org.junit.jupiter.api.extension.Extensions
17+
import org.mockito.junit.jupiter.MockitoExtension
18+
import org.mockito.junit.jupiter.MockitoSettings
19+
import org.mockito.quality.Strictness
20+
21+
@Extensions(
22+
ExtendWith(MockitoExtension::class),
23+
ExtendWith(ForgeExtension::class)
24+
)
25+
@MockitoSettings(strictness = Strictness.STRICT_STUBS)
26+
@ForgeConfiguration(BaseConfigurator::class)
27+
internal class DatadogFlagsProviderTest {
28+
29+
lateinit var provider: DatadogFlagsProvider
30+
31+
@BeforeEach
32+
fun setUp() {
33+
provider = DatadogFlagsProvider()
34+
}
35+
36+
@Test
37+
fun `M return greeting W helloWorld()`() {
38+
val result = provider.helloWorld()
39+
40+
assertThat(result).isEqualTo("Hello from DatadogFlagsProvider!")
41+
}
42+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Dependencies List
2+
3+
androidx.annotation:annotation-jvm:1.9.1 : 59 Kb
4+
dev.openfeature:kotlin-sdk-android:0.6.2 : 118 Kb
5+
org.jetbrains.kotlin:kotlin-stdlib:2.1.21 : 1683 Kb
6+
org.jetbrains:annotations:23.0.0 : 28 Kb
7+
8+
Total transitive dependencies size : 1889 Kb
9+

gradle/libs.versions.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ newPipeExtractor = "v0.24.6"
9595
navigation3 = "1.0.0-alpha01"
9696
kotlinxSerializationCore = "1.8.1"
9797
lifecycleViewmodelNav3 = "1.0.0-alpha01"
98+
openFeature = "0.6.2"
9899

99100
# Local Server
100101
ktor = "2.3.13"
@@ -248,6 +249,8 @@ rxJava3 = { module = "io.reactivex.rxjava3:rxjava", version.ref = "rxJava3" }
248249
rxJava3Android = { module = "io.reactivex.rxjava3:rxandroid", version.ref = "rxJava3" }
249250
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
250251

252+
openFeatureKotlinSdk = { module = "dev.openfeature:kotlin-sdk", version.ref = "openFeature" }
253+
251254
coroutinesCore = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
252255

253256
exoplayer = { module = "com.google.android.exoplayer:exoplayer", version.ref = "exoplayer" }

0 commit comments

Comments
 (0)