{"record":{"id":"b19241d109bc2464","repo":"quarkusio/quarkus","slug":"mediatype-must-not-be-null","errorCode":null,"errorMessage":"mediaType must not be null","messagePattern":"mediaType must not be null","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/EntityPartBuilderImpl.java","lineNumber":49,"sourceCode":"\n    private Object content;\n    private Class<?> contentType;\n    private Type contentGenericType;\n\n    public EntityPartBuilderImpl(String name, Serialisers serialisers) {\n        if (name == null) {\n            throw new IllegalArgumentException(\"name must not be null\");\n        }\n        this.name = name;\n        this.serialisers = serialisers;\n        this.mediaType = MediaType.APPLICATION_OCTET_STREAM_TYPE;\n        this.headers = new QuarkusMultivaluedHashMap<>();\n    }\n\n    @Override\n    public EntityPart.Builder mediaType(MediaType mediaType) throws IllegalArgumentException {\n        if (mediaType == null) {\n            throw new IllegalArgumentException(\"mediaType must not be null\");\n        }\n        this.mediaType = mediaType;\n        return this;\n    }\n\n    @Override\n    public EntityPart.Builder mediaType(String mediaTypeString) throws IllegalArgumentException {\n        if (mediaTypeString == null) {\n            throw new IllegalArgumentException(\"mediaType must not be null\");\n        }\n        this.mediaType = MediaType.valueOf(mediaTypeString);\n        return this;\n    }\n\n    @Override\n    public EntityPart.Builder header(String headerName, String... headerValues) throws IllegalArgumentException {\n        if (headerName == null) {\n            throw new IllegalArgumentException(\"headerName must not be null\");","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/EntityPartBuilderImpl.java#L31-L67","documentation":"EntityPart.Builder.mediaType(MediaType) sets the MIME type of the multipart part and rejects null because a part must have a well-defined media type for serialization. Passing a null MediaType throws IllegalArgumentException immediately.","triggerScenarios":"Calling partBuilder.mediaType((MediaType) null), typically when the MediaType was obtained from a lookup/parse that returned null.","commonSituations":"Deriving the media type from a file extension map or configuration that lacks an entry, leaving the MediaType null; a helper method returning null on unknown content types.","solutions":["Ensure a concrete MediaType is passed, e.g. MediaType.APPLICATION_OCTET_STREAM_TYPE as a safe default.","Validate/parse the content type string before constructing the MediaType and handle unknown types with a fallback.","Use the String overload mediaType(\"application/pdf\") with a non-null literal instead of pre-parsing.","Fix the mapping (e.g. file-extension-to-MIME table) so it never returns null for expected inputs."],"exampleFix":"// before\nMediaType mt = mimeMap.get(extension); // may be null\nbuilder.mediaType(mt);\n\n// after\nMediaType mt = mimeMap.getOrDefault(extension, MediaType.APPLICATION_OCTET_STREAM_TYPE);\nbuilder.mediaType(mt);","handlingStrategy":"validation","validationCode":"MediaType mt = resolveMediaType(extension);\nObjects.requireNonNull(mt, \"media type must not be null\");\nbuilder.mediaType(mt);","typeGuard":"MediaType requireMediaType(MediaType mt) {\n    return mt != null ? mt : MediaType.APPLICATION_OCTET_STREAM_TYPE;\n}","tryCatchPattern":"try {\n    builder.mediaType(mediaType);\n} catch (IllegalArgumentException e) {\n    builder.mediaType(MediaType.APPLICATION_OCTET_STREAM_TYPE);\n}","preventionTips":["Default to MediaType.APPLICATION_OCTET_STREAM_TYPE for unknown types.","Keep a complete extension-to-MIME mapping; never return null from it.","Validate parsed MediaTypes before handing them to the builder."],"tags":["resteasy-reactive","jax-rs","multipart","entitypart","media-type","null-argument"],"backgroundTag":"null-required-argument","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}