Validation framework

This pattern grew out of existing Intent data extraction code.

Goals

* abstract away the details of processing
* provide informative errors and warnings
* self documenting usage
* able to report multiple findings (warnings)
* fail assertions in acontrolled manner, not by throwing

Sample usage:
```
    fun readArgs(
       val bundle: Bundle
    ) = validateFrom(bundle::get): ValidationResult<ExampleObject> {
        val intValue = required(value<Int>("KEY_1"))
        val stringValue = required(value<String>("KEY_2"))
        val arrayValue = optional(array<String>("KEY_3"))
        val doubleValue = optional(value<Double>("KEY_4"))

        ExampleObject(intValue, stringValue, arrayValue, doubleValue)
    }
```

Bug: 300157408
Test: atest com.android.intentresolver.validation
Change-Id: I517e70df84c28e42023f19c8616804bc46884b49
13 files changed
tree: fa68944754e88edbdab8e40cafb343b598c3b26f
  1. aconfig/
  2. java/
  3. tests/
  4. Android.bp
  5. AndroidManifest-app.xml
  6. AndroidManifest-lib.xml
  7. OWNERS
  8. PREUPLOAD.cfg
  9. proguard.flags
  10. README.md
  11. TEST_MAPPING
README.md

IntentResolver

About

IntentResolver provides the implementation for Intent ACTION_CHOOSER

See also: ShareCompat.IntentBuilder