Create AnnotatedDataClass and AnnotatedEnumClass

Modelling enum classes in our internal representation so that we can
parse and generate from them.

Change-Id: I87aae21da13f6c8d5d9d7ecaf5685ae175a6fe5d
diff --git a/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/generator/SdkCodeGenerator.kt b/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/generator/SdkCodeGenerator.kt
index 2f90309..1e3d017 100644
--- a/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/generator/SdkCodeGenerator.kt
+++ b/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/generator/SdkCodeGenerator.kt
@@ -29,6 +29,7 @@
 import androidx.privacysandbox.tools.core.generator.ThrowableParcelConverterFileGenerator
 import androidx.privacysandbox.tools.core.generator.TransportCancellationGenerator
 import androidx.privacysandbox.tools.core.generator.ValueConverterFileGenerator
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.ParsedApi
 import androidx.privacysandbox.tools.core.model.containsSdkActivityLauncher
 import androidx.privacysandbox.tools.core.model.getOnlyService
@@ -120,7 +121,9 @@
     private fun generateValueConverters() {
         val valueConverterFileGenerator =
             ValueConverterFileGenerator(binderCodeConverter, target)
-        api.values.map(valueConverterFileGenerator::generate).forEach(::write)
+        // TODO(b/323369085): Generate value converters for enum classes
+        api.values.filterIsInstance<AnnotatedDataClass>().map(valueConverterFileGenerator::generate)
+            .forEach(::write)
         api.interfaces.filter { it.inheritsSandboxedUiAdapter }.map {
             CoreLibInfoAndBinderWrapperConverterGenerator.generate(it).also(::write)
         }
diff --git a/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParser.kt b/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParser.kt
index ff37a6d..7f7dfcd 100644
--- a/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParser.kt
+++ b/privacysandbox/tools/tools-apicompiler/src/main/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParser.kt
@@ -16,6 +16,7 @@
 
 package androidx.privacysandbox.tools.apicompiler.parser
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.ValueProperty
 import com.google.devtools.ksp.isPublic
@@ -60,7 +61,7 @@
             )
         }
 
-        return AnnotatedValue(
+        return AnnotatedDataClass(
             type = typeParser.parseFromDeclaration(value),
             properties = value.getAllProperties().map(::parseProperty).toList()
         )
diff --git a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParserTest.kt b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParserTest.kt
index 4b8f7a9..58c9c5b 100644
--- a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParserTest.kt
+++ b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/parser/ValueParserTest.kt
@@ -18,8 +18,8 @@
 
 import androidx.privacysandbox.tools.apicompiler.util.checkSourceFails
 import androidx.privacysandbox.tools.apicompiler.util.parseSources
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.Method
 import androidx.privacysandbox.tools.core.model.Parameter
 import androidx.privacysandbox.tools.core.model.ParsedApi
@@ -37,7 +37,7 @@
 class ValueParserTest {
 
     @Test
-    fun parseValues_ok() {
+    fun parseDataClass_ok() {
         val source = Source.kotlin(
             "com/mysdk/MySdk.kt", """
                     package com.mysdk
@@ -74,14 +74,14 @@
                     )
                 ),
                 values = setOf(
-                    AnnotatedValue(
+                    AnnotatedDataClass(
                         type = Type(packageName = "com.mysdk", simpleName = "MySdkRequest"),
                         properties = listOf(
                             ValueProperty("id", Types.int),
                             ValueProperty("message", Types.string.asNullable()),
                         )
                     ),
-                    AnnotatedValue(
+                    AnnotatedDataClass(
                         type = Type(packageName = "com.mysdk", simpleName = "MySdkResponse"),
                         properties = listOf(
                             ValueProperty(
@@ -91,7 +91,7 @@
                             ValueProperty("isTrulyMagic", Types.boolean),
                         )
                     ),
-                    AnnotatedValue(
+                    AnnotatedDataClass(
                         type = Type(packageName = "com.mysdk", simpleName = "MagicPayload"),
                         properties = listOf(ValueProperty("magicList", Types.list(Types.long)))
                     ),
diff --git a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt
index 096aed8..746878b 100644
--- a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/PrivacySandboxApiGenerator.kt
@@ -33,6 +33,7 @@
 import androidx.privacysandbox.tools.core.generator.ThrowableParcelConverterFileGenerator
 import androidx.privacysandbox.tools.core.generator.ValueConverterFileGenerator
 import androidx.privacysandbox.tools.core.generator.ValueFileGenerator
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.ParsedApi
 import androidx.privacysandbox.tools.core.model.containsSdkActivityLauncher
 import androidx.privacysandbox.tools.core.model.getOnlyService
@@ -179,10 +180,13 @@
         val valueFileGenerator = ValueFileGenerator()
         val valueConverterFileGenerator =
             ValueConverterFileGenerator(binderCodeConverter, GenerationTarget.CLIENT)
-        api.values.forEach {
-            valueFileGenerator.generate(it).writeTo(output)
-            valueConverterFileGenerator.generate(it).writeTo(output)
-        }
+        api.values
+            // TODO(b/323369085): Generate value converters for enum classes
+            .filterIsInstance<AnnotatedDataClass>()
+            .forEach {
+                valueFileGenerator.generate(it).writeTo(output)
+                valueConverterFileGenerator.generate(it).writeTo(output)
+            }
     }
 
     private fun generateCoreLibInfoConverters(api: ParsedApi, output: File) {
diff --git a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParser.kt b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParser.kt
index 215b9bd..ebfb05b 100644
--- a/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParser.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/main/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParser.kt
@@ -16,6 +16,7 @@
 
 package androidx.privacysandbox.tools.apigenerator.parser
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.Method
@@ -86,7 +87,7 @@
                     "@PrivacySandboxValue."
             )
         }
-        return AnnotatedValue(type, parseProperties(type, value))
+        return AnnotatedDataClass(type, parseProperties(type, value))
     }
 
     /** Parses properties and sorts them based on the order of constructor parameters. */
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt
index c5f5516..7901798 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt
@@ -17,8 +17,8 @@
 package androidx.privacysandbox.tools.apigenerator.parser
 
 import androidx.privacysandbox.tools.apigenerator.mergedClasspath
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.Method
 import androidx.privacysandbox.tools.core.model.Parameter
 import androidx.privacysandbox.tools.core.model.ParsedApi
@@ -83,20 +83,20 @@
                 """.trimMargin(),
         )
 
-        val expectedPayloadType = AnnotatedValue(
+        val expectedPayloadType = AnnotatedDataClass(
             type = Type("com.mysdk", "PayloadType"),
             properties = listOf(
                 ValueProperty("size", Types.long),
                 ValueProperty("appId", Types.string),
             )
         )
-        val expectedPayloadRequest = AnnotatedValue(
+        val expectedPayloadRequest = AnnotatedDataClass(
             type = Type("com.mysdk", "PayloadRequest"),
             properties = listOf(
                 ValueProperty("type", expectedPayloadType.type),
             )
         )
-        val expectedPayloadResponse = AnnotatedValue(
+        val expectedPayloadResponse = AnnotatedDataClass(
             type = Type("com.mysdk", "PayloadResponse"),
             properties = listOf(
                 ValueProperty("url", Types.string),
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
index abb403b..f95621c 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
@@ -23,6 +23,7 @@
 import androidx.privacysandbox.tools.core.generator.poet.AidlParcelableSpec.Companion.aidlParcelable
 import androidx.privacysandbox.tools.core.generator.poet.AidlTypeKind
 import androidx.privacysandbox.tools.core.generator.poet.AidlTypeSpec
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.Method
@@ -89,7 +90,9 @@
     }
 
     private fun generateAidlContent(): List<AidlFileSpec> {
-        val values = api.values.map(::generateValue)
+        // TODO(b/323369085): Generate AIDL content for enum classes
+        val values = api.values.filterIsInstance<AnnotatedDataClass>()
+            .map(::generateValue)
         val service = aidlInterface(api.getOnlyService())
         val customCallbacks = api.callbacks.flatMap(::aidlInterface)
         val interfaces = api.interfaces.flatMap(::aidlInterface)
@@ -216,7 +219,7 @@
         }
     }
 
-    private fun generateValue(value: AnnotatedValue): AidlFileSpec {
+    private fun generateValue(value: AnnotatedDataClass): AidlFileSpec {
         return aidlParcelable(value.aidlType().innerType) {
             for (property in value.properties) {
                 addProperty(property.name, getAidlTypeDeclaration(property.type))
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt
index 0b487b4..3fd3c73 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueConverterFileGenerator.kt
@@ -19,7 +19,7 @@
 import androidx.privacysandbox.tools.core.generator.GenerationTarget.SERVER
 import androidx.privacysandbox.tools.core.generator.SpecNames.contextClass
 import androidx.privacysandbox.tools.core.generator.SpecNames.contextPropertyName
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.ValueProperty
 import com.squareup.kotlinpoet.CodeBlock
 import com.squareup.kotlinpoet.FileSpec
@@ -42,7 +42,7 @@
         const val fromParcelableMethodName = "fromParcelable"
     }
 
-    fun generate(value: AnnotatedValue) =
+    fun generate(value: AnnotatedDataClass) =
         FileSpec.builder(
             value.converterNameSpec().packageName,
             value.converterNameSpec().simpleName
@@ -51,7 +51,7 @@
             addType(generateConverter(value))
         }
 
-    private fun generateConverter(value: AnnotatedValue): TypeSpec {
+    private fun generateConverter(value: AnnotatedDataClass): TypeSpec {
         if (target == SERVER) {
             return TypeSpec.classBuilder(value.converterNameSpec()).build {
                 primaryConstructor(
@@ -70,7 +70,7 @@
         }
     }
 
-    private fun generateToParcelable(value: AnnotatedValue) =
+    private fun generateToParcelable(value: AnnotatedDataClass) =
         FunSpec.builder(toParcelableMethodName).build {
             addParameter("annotatedValue", value.type.poetTypeName())
             returns(value.parcelableNameSpec())
@@ -90,7 +90,7 @@
             )
         }
 
-    private fun generateFromParcelable(value: AnnotatedValue) =
+    private fun generateFromParcelable(value: AnnotatedDataClass) =
         FunSpec.builder(fromParcelableMethodName).build {
             addParameter("parcelable", value.parcelableNameSpec())
             returns(value.type.poetTypeName())
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueFileGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueFileGenerator.kt
index 4eac9ed..400849c 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueFileGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ValueFileGenerator.kt
@@ -16,7 +16,7 @@
 
 package androidx.privacysandbox.tools.core.generator
 
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import com.squareup.kotlinpoet.FileSpec
 import com.squareup.kotlinpoet.KModifier
 import com.squareup.kotlinpoet.PropertySpec
@@ -26,13 +26,13 @@
  * Generates a file that defines a previously declared SDK value.
  */
 class ValueFileGenerator {
-    fun generate(value: AnnotatedValue) =
+    fun generate(value: AnnotatedDataClass) =
         FileSpec.builder(value.type.packageName, value.type.simpleName).build {
             addCommonSettings()
             addType(generateValue(value))
         }
 
-    private fun generateValue(value: AnnotatedValue) =
+    private fun generateValue(value: AnnotatedDataClass) =
         TypeSpec.classBuilder(value.type.poetClassName()).build {
             addModifiers(KModifier.DATA)
             primaryConstructor(value.properties.map {
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedValue.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedValue.kt
index 447f1de..86a7f18 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedValue.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedValue.kt
@@ -16,7 +16,14 @@
 
 package androidx.privacysandbox.tools.core.model
 
-data class AnnotatedValue(
-    val type: Type,
+sealed class AnnotatedValue(open val type: Type)
+
+data class AnnotatedDataClass(
+    override val type: Type,
     val properties: List<ValueProperty>,
-)
+) : AnnotatedValue(type)
+
+data class AnnotatedEnumClass(
+    override val type: Type,
+    val variants: List<String>,
+) : AnnotatedValue(type)
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
index eb3f5f4..8387d0f 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
@@ -48,7 +48,11 @@
 }
 
 private fun AnnotatedValue.containsSdkActivityLauncher(): Boolean =
-    properties.any { it.type.qualifiedName == Types.sdkActivityLauncher.qualifiedName }
+    when (this) {
+        is AnnotatedEnumClass -> false
+        is AnnotatedDataClass ->
+            properties.any { it.type.qualifiedName == Types.sdkActivityLauncher.qualifiedName }
+    }
 
 object Types {
     val unit = Type(packageName = "kotlin", simpleName = "Unit")
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/validator/ModelValidator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/validator/ModelValidator.kt
index 86a0127..a53f8c3 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/validator/ModelValidator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/validator/ModelValidator.kt
@@ -16,6 +16,7 @@
 
 package androidx.privacysandbox.tools.core.validator
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.ParsedApi
@@ -113,6 +114,7 @@
 
     private fun validateValuePropertyTypes() {
         for (value in api.values) {
+            if (value !is AnnotatedDataClass) { continue }
             for (property in value.properties) {
                 if (!isValidValuePropertyType(property.type)) {
                     errors.add(
diff --git a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/AidlValueGeneratorTest.kt b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/AidlValueGeneratorTest.kt
index 19f9a7b..4dd08cb 100644
--- a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/AidlValueGeneratorTest.kt
+++ b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/AidlValueGeneratorTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.privacysandbox.tools.core.generator
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.Method
 import androidx.privacysandbox.tools.core.model.Parameter
 import androidx.privacysandbox.tools.core.model.ParsedApi
@@ -36,7 +36,7 @@
 class AidlValueGeneratorTest {
     @Test
     fun generate() {
-        val innerValue = AnnotatedValue(
+        val innerValue = AnnotatedDataClass(
             Type(packageName = "com.mysdk", simpleName = "InnerValue"),
             listOf(
                 ValueProperty("intProperty", Types.int),
@@ -45,7 +45,7 @@
                 ValueProperty("maybeFloatProperty", Types.float.asNullable()),
             )
         )
-        val outerValue = AnnotatedValue(
+        val outerValue = AnnotatedDataClass(
             Type(packageName = "com.mysdk", simpleName = "OuterValue"),
             listOf(
                 ValueProperty("innerValue", innerValue.type),
diff --git a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverterTest.kt b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverterTest.kt
index 8215aae..cb70d87 100644
--- a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverterTest.kt
+++ b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverterTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.privacysandbox.tools.core.generator
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.ParsedApi
 import androidx.privacysandbox.tools.core.model.Type
 import androidx.privacysandbox.tools.core.model.Types
@@ -36,7 +36,7 @@
                 )
             ),
             values = setOf(
-                AnnotatedValue(
+                AnnotatedDataClass(
                     type = Type(packageName = "com.mysdk", simpleName = "Value"),
                     properties = listOf()
                 )
diff --git a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ServerBinderCodeConverterTest.kt b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ServerBinderCodeConverterTest.kt
index e0cdf51..af76007 100644
--- a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ServerBinderCodeConverterTest.kt
+++ b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/generator/ServerBinderCodeConverterTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.privacysandbox.tools.core.generator
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.ParsedApi
 import androidx.privacysandbox.tools.core.model.Type
 import androidx.privacysandbox.tools.core.model.Types
@@ -36,7 +36,7 @@
                 )
             ),
             values = setOf(
-                AnnotatedValue(
+                AnnotatedDataClass(
                     type = Type(packageName = "com.mysdk", simpleName = "Value"),
                     properties = listOf()
                 )
diff --git a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/validator/ModelValidatorTest.kt b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/validator/ModelValidatorTest.kt
index 55c23cc..d6d58a7 100644
--- a/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/validator/ModelValidatorTest.kt
+++ b/privacysandbox/tools/tools-core/src/test/java/androidx/privacysandbox/tools/core/validator/ModelValidatorTest.kt
@@ -16,8 +16,8 @@
 
 package androidx.privacysandbox.tools.core.validator
 
+import androidx.privacysandbox.tools.core.model.AnnotatedDataClass
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
-import androidx.privacysandbox.tools.core.model.AnnotatedValue
 import androidx.privacysandbox.tools.core.model.Method
 import androidx.privacysandbox.tools.core.model.Parameter
 import androidx.privacysandbox.tools.core.model.ParsedApi
@@ -82,7 +82,7 @@
                 )
             ),
             values = setOf(
-                AnnotatedValue(
+                AnnotatedDataClass(
                     type = Type(packageName = "com.mysdk", simpleName = "Foo"),
                     properties = listOf(
                         ValueProperty(
@@ -91,7 +91,7 @@
                         )
                     ),
                 ),
-                AnnotatedValue(
+                AnnotatedDataClass(
                     type = Type(packageName = "com.mysdk", simpleName = "Bar"),
                     properties = emptyList(),
                 )
@@ -312,7 +312,7 @@
                 AnnotatedInterface(type = Type(packageName = "com.mysdk", simpleName = "MySdk")),
             ),
             values = setOf(
-                AnnotatedValue(
+                AnnotatedDataClass(
                     type = Type(packageName = "com.mysdk", simpleName = "Foo"),
                     properties = listOf(
                         ValueProperty("bar", Type("com.mysdk", "Bar"))