# DocumentClassFactory

Artifact: [androidx.appsearch:appsearch](https://developer.android.com/jetpack/androidx/releases/appsearch) [View Source](https://cs.android.com/search?q=file:androidx/appsearch/app/DocumentClassFactory.java+class:androidx.appsearch.app.DocumentClassFactory) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

*** ** * ** ***

<br />

```
interface DocumentClassFactory<T>
```

<br />

*** ** * ** ***

An interface for factories which can convert between instances of classes annotated with \\@`https://developer.android.com/reference/kotlin/androidx/appsearch/annotation/Document` and instances of `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument`.

| Parameters |
|---|---|
| `<T>` | The document class type this factory converts to and from `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument`. |

## Summary

| ### Public functions |
|---|---|
| `T` | `@https://developer.android.com/reference/kotlin/androidx/appsearch/app/ExperimentalAppSearchApi https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassFactory#fromGenericDocument(androidx.appsearch.app.GenericDocument,androidx.appsearch.app.DocumentClassMappingContext)( genericDoc: https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument, documentClassMappingContext: https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassMappingContext )` Converts a `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument` into an instance of the document class. |
| `(https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/java/lang/Class.html<*>!>` | `https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassFactory#getDependencyDocumentClasses()()` Returns document classes that this document class depends on. |
| `https://developer.android.com/reference/kotlin/androidx/appsearch/app/AppSearchSchema` | `https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassFactory#getSchema()()` Returns the schema for this document class. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassFactory#getSchemaName()()` Returns the name of this schema type, e.g. |
| `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument` | `https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassFactory#toGenericDocument(T)(document: T)` Converts an instance of the class annotated with \\@`https://developer.android.com/reference/kotlin/androidx/appsearch/annotation/Document` into a `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument`. |

## Public functions

### fromGenericDocument

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
@ExperimentalAppSearchApi
fun fromGenericDocument(
    genericDoc: GenericDocument,
    documentClassMappingContext: DocumentClassMappingContext
): T
```

Converts a `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument` into an instance of the document class. For nested document properties, this method should pass `documentClassMappingContext` down to the nested calls of `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument#toDocumentClass(java.lang.Class<T>,androidx.appsearch.app.DocumentClassMappingContext)`.

| Parameters |
|---|---|
| `genericDoc: https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument` | The document to convert. |
| `documentClassMappingContext: https://developer.android.com/reference/kotlin/androidx/appsearch/app/DocumentClassMappingContext` | The context object that holds mapping information for document classes and their parent types. This context typically comes from `https://developer.android.com/reference/kotlin/androidx/appsearch/app/SearchResult#getDocument(java.lang.Class<T>,java.util.Map<java.lang.String,java.util.List<java.lang.String>>)`. |

| Throws |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/appsearch/exceptions/AppSearchException` |   |

### getDependencyDocumentClasses

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
fun getDependencyDocumentClasses(): (Mutable)List<Class<*>!>
```

Returns document classes that this document class depends on. This is useful so clients are not required to explicitly set all dependencies.

| Throws |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/appsearch/exceptions/AppSearchException` |   |

### getSchema

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
fun getSchema(): AppSearchSchema
```

Returns the schema for this document class.

| Throws |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/appsearch/exceptions/AppSearchException` |   |

### getSchemaName

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
fun getSchemaName(): String
```

Returns the name of this schema type, e.g. `Email`.

This is the name used in queries for type restricts.

### toGenericDocument

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/appsearch#1.1.0)

```
fun toGenericDocument(document: T): GenericDocument
```

Converts an instance of the class annotated with \\@`https://developer.android.com/reference/kotlin/androidx/appsearch/annotation/Document` into a `https://developer.android.com/reference/kotlin/androidx/appsearch/app/GenericDocument`.

| Throws |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/appsearch/exceptions/AppSearchException` |   |