{"record":{"id":"bde5fa9318fe5dd2","repo":"apache/beam","slug":"schemausertypecreator-not-available","errorCode":null,"errorMessage":"SchemaUserTypeCreator not available","messagePattern":"SchemaUserTypeCreator not available","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/schemas/AwsSchemaProvider.java","lineNumber":219,"sourceCode":"      Set<String> unknowns = difference(newHashSet(schema.getFieldNames()), fields.keySet());\n      checkState(unknowns.isEmpty(), \"Row schema contains unknown fields: %s\", unknowns);\n    }\n  }\n\n  @Override\n  public List<FieldValueTypeInformation> fieldValueTypeInformations(\n      TypeDescriptor<?> targetTypeDescriptor, Schema schema) {\n    List<SdkField<?>> sdkFieldList = sdkFields((Class) targetTypeDescriptor.getRawType());\n\n    return sdkFieldList.stream()\n        .map(AwsTypes::fieldValueTypeInformationFor)\n        .collect(Collectors.toList());\n  }\n\n  @Override\n  public SchemaUserTypeCreator schemaTypeCreator(\n      TypeDescriptor<?> targetTypeDescriptor, Schema schema) {\n    throw new UnsupportedOperationException(\"SchemaUserTypeCreator not available\");\n  }\n\n  private static <T extends SdkPojo> AwsBuilderFactory<T, ?> builderFactory(Class<T> cls) {\n    return FACTORIES.computeIfAbsent(cls, c -> AwsSchemaUtils.builderFactory(cls));\n  }\n\n  private static <T extends SdkPojo> List<SdkField<?>> sdkFields(Class<T> cls) {\n    return builderFactory(cls).sdkFields();\n  }\n\n  private static <T extends SdkPojo> SdkBuilder<?, T> sdkBuilder(Class<T> cls) {\n    return builderFactory(cls).get();\n  }\n\n  private static <T extends SdkPojo> Map<String, SdkField<?>> sdkFieldsByName(Class<T> cls) {\n    return sdkFields(cls).stream().collect(toMap(AwsTypes::normalizedNameOf, identity()));\n  }\n}","sourceCodeStart":201,"sourceCodeEnd":237,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/schemas/AwsSchemaProvider.java#L201-L237","documentation":"AwsSchemaProvider.schemaTypeCreator always throws UnsupportedOperationException because AWS SDK v2 POJOs are not Beam SchemaUserTypeCreator-compatible; you cannot instantiate an SdkPojo from a Beam Row via this provider. The provider supports reading AWS objects as Rows (schema inference) but not the reverse (creating instances from Rows).","triggerScenarios":"Registering AwsSchemaProvider in the schema registry and then calling Schema.toRow/getters pipeline APIs that require a creator for an AWS SDK SdkPojo type; using setRow/Row-construction APIs on AwsModel target types.","commonSituations":"Attempting to materialize AWS SDK objects (e.g. SqsMessage) from Beam Rows using Schema.andValues or toBean; enabling schema coders on AWS POJOs in a direction the provider doesn't support.","solutions":["Do not use Beam Schema creation APIs to build AWS SDK POJOs; construct them with their builder classes","Map the Row manually to the SdkPojo builder fields","Wrap the target type in your own schema provider that implements schemaTypeCreator"],"exampleFix":"// before\nMyAwsModel model = (MyAwsModel) Schema.andValues(schema, row); // hits UnsupportedOperationException\n// after\nMyAwsModel model = MyAwsModel.builder()\n    .field1(row.getString(\"field1\"))\n    .field2(row.getInt64(\"field2\"))\n    .build();","handlingStrategy":"validation","validationCode":"if (AwsSchemaProvider.class.equals(registry.schemaProvider(targetType))) { /* cannot use SchemaUserTypeCreator APIs on AWS POJOs */ }","typeGuard":null,"tryCatchPattern":"try { return schemaRegistry.getCreator(MyAwsPojo.class); } catch (UnsupportedOperationException e) { /* build via MyAwsPojo.builder() instead */ }","preventionTips":["Never construct AWS SDK POJOs from Beam Rows via schema creator APIs","Use SDK builder classes to instantiate SdkPojo objects","Register a custom SchemaProvider only if you truly need creator support"],"tags":["java","schemas","unsupported-operation"],"backgroundTag":"method-not-implemented","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}