diff --git a/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ResponseFieldSpec.kt b/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ResponseFieldSpec.kt index ff5759ce..ebf6c484 100644 --- a/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ResponseFieldSpec.kt +++ b/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ResponseFieldSpec.kt @@ -99,11 +99,15 @@ class ResponseFieldSpec( private fun readEnumCode(readerParam: CodeBlock, fieldParam: CodeBlock): CodeBlock { val readValueCode = CodeBlock.builder() - .addStatement("final \$T \$L", normalizedFieldSpec.type, fieldSpec.name) + .addStatement("\$T \$L", normalizedFieldSpec.type, fieldSpec.name) .beginControlFlow("if (\$LStr != null)", fieldSpec.name) + .beginControlFlow("try") .addStatement("\$L = \$T.valueOf(\$LStr)", fieldSpec.name, normalizedFieldSpec.type, fieldSpec.name) + .nextControlFlow("catch (IllegalArgumentException exception)") + .addStatement("\$L = \$T.UNKNOWN", fieldSpec.name, normalizedFieldSpec.type) + .endControlFlow() .nextControlFlow("else") - .addStatement("\$L = null", fieldSpec.name) + .addStatement("\$L = \$T.UNKNOWN", fieldSpec.name, normalizedFieldSpec.type) .endControlFlow() .build() return CodeBlock diff --git a/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ir/TypeDeclaration.kt b/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ir/TypeDeclaration.kt index 59929785..451e9a26 100644 --- a/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ir/TypeDeclaration.kt +++ b/aws-android-sdk-appsync-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ir/TypeDeclaration.kt @@ -58,6 +58,7 @@ data class TypeDeclaration( .build() addEnumConstant(value.name, typeSpec) } + addEnumConstant("UNKNOWN") return this }