Skip to content

Commit 06861c0

Browse files
committed
scaffold openfeature provider module
1 parent ac6a9f5 commit 06861c0

File tree

9 files changed

+171
-0
lines changed

9 files changed

+171
-0
lines changed

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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class com.datadog.android.flags.openfeature.DatadogFlagsProvider
2+
fun helloWorld(): String
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public final class com/datadog/android/flags/openfeature/DatadogFlagsProvider {
2+
public fun <init> ()V
3+
public final fun helloWorld ()Ljava/lang/String;
4+
}
5+
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
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+
id("com.google.devtools.ksp")
21+
22+
// Publish
23+
`maven-publish`
24+
signing
25+
id("org.jetbrains.dokka-javadoc")
26+
27+
// Analysis tools
28+
id("com.github.ben-manes.versions")
29+
30+
// Tests
31+
id("de.mobilej.unmock")
32+
id("org.jetbrains.kotlinx.kover")
33+
34+
// Internal Generation
35+
id("com.datadoghq.dependency-license")
36+
id("apiSurface")
37+
id("transitiveDependencies")
38+
id("verificationXml")
39+
id("binary-compatibility-validator")
40+
}
41+
42+
android {
43+
namespace = "com.datadog.android.flags.openfeature"
44+
}
45+
46+
dependencies {
47+
// datadog
48+
api(project(":dd-sdk-android-core"))
49+
api(project(":features:dd-sdk-android-flags"))
50+
implementation(project(":dd-sdk-android-internal"))
51+
52+
// OpenFeature SDK
53+
api("dev.openfeature:kotlin-sdk:0.6.2")
54+
55+
implementation(libs.kotlin)
56+
implementation(libs.androidXAnnotation)
57+
58+
// Generate NoOp implementations
59+
ksp(project(":tools:noopfactory"))
60+
61+
testImplementation(project(":tools:unit")) {
62+
attributes {
63+
attribute(
64+
com.android.build.api.attributes.ProductFlavorAttr.of("platform"),
65+
objects.named("jvm")
66+
)
67+
}
68+
}
69+
testImplementation(testFixtures(project(":dd-sdk-android-core")))
70+
testImplementation(testFixtures(project(":features:dd-sdk-android-rum")))
71+
testImplementation(libs.bundles.jUnit5)
72+
testImplementation(libs.bundles.testTools)
73+
unmock(libs.robolectric)
74+
}
75+
76+
unMock {
77+
keepStartingWith("org.json")
78+
}
79+
80+
kotlinConfig(jvmBytecodeTarget = JvmTarget.JVM_11)
81+
androidLibraryConfig()
82+
junitConfig()
83+
javadocConfig()
84+
dependencyUpdateConfig()
85+
publishingConfig(
86+
"OpenFeature Provider integration for the Datadog Feature Flags " +
87+
"library for Android applications."
88+
)
89+
detektCustomConfig()
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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+
fun helloWorld(): String {
15+
return "Hello from DatadogFlagsProvider!"
16+
}
17+
}
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+

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ include(":features:dd-sdk-android-session-replay-compose")
2121
include(":features:dd-sdk-android-session-replay-material")
2222
include(":features:dd-sdk-android-trace-otel")
2323
include(":features:dd-sdk-android-flags")
24+
include(":features:dd-sdk-android-flags-openfeature")
2425

2526
// INTEGRATION LIBRARIES
2627
include(":integrations:dd-sdk-android-apollo")

0 commit comments

Comments
 (0)