# ProtoUtils

Summary:[Methods](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#)  

# ProtoUtils

| This package is part of the Android[support library](https://developer.android.com/topic/libraries/support-library)which is no longer maintained. The support library has been superseded by[AndroidX](https://developer.android.com/jetpack/androidx)which is part of[Jetpack](https://developer.android.com/jetpack). We recommend using the AndroidX libraries in all new projects. You should also consider[migrating](https://developer.android.com/jetpack/androidx/migrate)existing projects to AndroidX. To find the AndroidX class that maps to this deprecated class, see the AndroidX support library[class mappings](https://developer.android.com/jetpack/androidx/migrate/class-mappings).

`
public

final

class
ProtoUtils
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object.html)`


``


`

|---|-------------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||
| ↳ | android.support.test.espresso.remote.ProtoUtils |

<br />

*** ** * ** ***

Contains various utility methods to ease use of protos and increased readability in code.

## Summary

|                                                                                                                                                                                                                                                                                                                                                                   ### Public methods                                                                                                                                                                                                                                                                                                                                                                    ||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static `[String](https://developer.android.com/reference/java/lang/String.html)                                                                                | ` `[capitalizeFirstChar](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#capitalizeFirstChar(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String.html)` aString) ` Capitalizes the first char of a String.                                                                                                                                                                                                                                                                                                 |
| ` static <T extends `[Enum](https://developer.android.com/reference/java/lang/Enum.html)`> T`                                                                    | ` `[checkedGetEnumForProto](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#checkedGetEnumForProto(int, java.lang.Class<T>))`(int protoEnumIndex, `[Class](https://developer.android.com/reference/java/lang/Class.html)`<T> enumClass) ` Maps an enum proto message type to a internal representation enum type T.                                                                                                                                                                                                                           |
| ` static `[List](https://developer.android.com/reference/java/util/List.html)`<`[Field](https://developer.android.com/reference/java/lang/reflect/Field.html)`>` | ` `[getFilteredFieldList](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#getFilteredFieldList(java.lang.Class<?>, java.util.List<java.lang.String>))`(`[Class](https://developer.android.com/reference/java/lang/Class.html)`<?> clazz, `[List](https://developer.android.com/reference/java/util/List.html)`<`[String](https://developer.android.com/reference/java/lang/String.html)`> targetFieldNames) ` Returns a filtered view of a class's declared[Field](https://developer.android.com/reference/java/lang/reflect/Field.html)list. |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils#)From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object.html)` ` |-------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object.html)          | ` clone() `                                                                                | | ` boolean`                                                                          | ` equals(`[Object](https://developer.android.com/reference/java/lang/Object.html)` arg0) ` | | ` void`                                                                             | ` finalize() `                                                                             | | ` final `[Class](https://developer.android.com/reference/java/lang/Class.html)`<?>` | ` getClass() `                                                                             | | ` int`                                                                              | ` hashCode() `                                                                             | | ` final void`                                                                       | ` notify() `                                                                               | | ` final void`                                                                       | ` notifyAll() `                                                                            | | ` `[String](https://developer.android.com/reference/java/lang/String.html)          | ` toString() `                                                                             | | ` final void`                                                                       | ` wait(long arg0, int arg1) `                                                              | | ` final void`                                                                       | ` wait(long arg0) `                                                                        | | ` final void`                                                                       | ` wait() `                                                                                 | ||

## Public methods

### capitalizeFirstChar

```
String capitalizeFirstChar (String aString)
```

Capitalizes the first char of a String.

Examples: "espresso" -\> "Espresso", "Espresso" -\> "Espresso"

<br />

|                      Parameters                      ||
|-----------|-------------------------------------------|
| `aString` | `String`: the String to capitalize <br /> |

|                                                                   Returns                                                                   ||
|-------------------------------------------------------------------------|--------------------------------------------------------------------|
| [String](https://developer.android.com/reference/java/lang/String.html) | capitalized String or original String, if aString was empty <br /> |

### checkedGetEnumForProto

```
T checkedGetEnumForProto (int protoEnumIndex, 
                Class<T> enumClass)
```

Maps an enum proto message type to a internal representation enum type T.

<br />

|                                                Parameters                                                 ||
|------------------|-----------------------------------------------------------------------------------------|
| `protoEnumIndex` | `int`: the proto enum index of the value returned by the unwrapped proto message <br /> |
| `enumClass`      | `Class`: the enum class to map against <br />                                           |

|                       Returns                        ||
|-----|-------------------------------------------------|
| `T` | the enum constant for a proto enum index <br /> |

### getFilteredFieldList

```
List<Field> getFilteredFieldList (Class<?> clazz, 
                List<String> targetFieldNames)
```

Returns a filtered view of a class's declared[Field](https://developer.android.com/reference/java/lang/reflect/Field.html)list.

<br />

|                                                                         Parameters                                                                         ||
|--------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| `clazz`            | `Class`: the class to introspect <br />                                                                                                |
| `targetFieldNames` | `List`: the field names to filter from a class[Field](https://developer.android.com/reference/java/lang/reflect/Field.html)list <br /> |

|                                                                                                                                Returns                                                                                                                                ||
|--------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| [List](https://developer.android.com/reference/java/util/List.html)`<`[Field](https://developer.android.com/reference/java/lang/reflect/Field.html)`>` | a filtered list of class[Field](https://developer.android.com/reference/java/lang/reflect/Field.html)s <br /> |

|                                                                    Throws                                                                     ||
|-----------------------------------------------------------------------------------------------------|------------------------------------------|
| [NoSuchFieldException](https://developer.android.com/reference/java/lang/NoSuchFieldException.html) | if a field name does not exist in`clazz` |

-

  ## Interfaces

  - [Bindable](https://developer.android.com/reference/android/support/test/espresso/remote/Bindable)
  - [Converter](https://developer.android.com/reference/android/support/test/espresso/remote/Converter)
  - [EspressoRemoteMessage](https://developer.android.com/reference/android/support/test/espresso/remote/EspressoRemoteMessage)
  - [EspressoRemoteMessage.From](https://developer.android.com/reference/android/support/test/espresso/remote/EspressoRemoteMessage.From)
  - [EspressoRemoteMessage.To](https://developer.android.com/reference/android/support/test/espresso/remote/EspressoRemoteMessage.To)
  - [RemoteInteraction](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteInteraction)
-

  ## Classes

  - [ConstructorInvocation](https://developer.android.com/reference/android/support/test/espresso/remote/ConstructorInvocation)
  - [EspressoRemote](https://developer.android.com/reference/android/support/test/espresso/remote/EspressoRemote)
  - [FieldDescriptor](https://developer.android.com/reference/android/support/test/espresso/remote/FieldDescriptor)
  - [GenericRemoteMessage](https://developer.android.com/reference/android/support/test/espresso/remote/GenericRemoteMessage)
  - [InteractionRequest](https://developer.android.com/reference/android/support/test/espresso/remote/InteractionRequest)
  - [InteractionRequest.Builder](https://developer.android.com/reference/android/support/test/espresso/remote/InteractionRequest.Builder)
  - [InteractionResponse](https://developer.android.com/reference/android/support/test/espresso/remote/InteractionResponse)
  - [InteractionResponse.Builder](https://developer.android.com/reference/android/support/test/espresso/remote/InteractionResponse.Builder)
  - [InteractionResponse.RemoteError](https://developer.android.com/reference/android/support/test/espresso/remote/InteractionResponse.RemoteError)
  - [NoopRemoteInteraction](https://developer.android.com/reference/android/support/test/espresso/remote/NoopRemoteInteraction)
  - [ProtoUtils](https://developer.android.com/reference/android/support/test/espresso/remote/ProtoUtils)
  - [RemoteDescriptor](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteDescriptor)
  - [RemoteDescriptor.Builder](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteDescriptor.Builder)
  - [RemoteDescriptorRegistry](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteDescriptorRegistry)
  - [RemoteInteractionRegistry](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteInteractionRegistry)
  - [TypeProtoConverters](https://developer.android.com/reference/android/support/test/espresso/remote/TypeProtoConverters)
-

  ## Enums

  - [InteractionResponse.Status](https://developer.android.com/reference/android/support/test/espresso/remote/InteractionResponse.Status)
-

  ## Exceptions

  - [NoRemoteEspressoInstanceException](https://developer.android.com/reference/android/support/test/espresso/remote/NoRemoteEspressoInstanceException)
  - [RemoteEspressoException](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteEspressoException)
  - [RemoteProtocolException](https://developer.android.com/reference/android/support/test/espresso/remote/RemoteProtocolException)