{"record":{"id":"5a6793e79048a94a","repo":"quarkusio/quarkus","slug":"values-parameter-is-null","errorCode":null,"errorMessage":"Values parameter is null","messagePattern":"Values parameter is null","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/UriBuilderImpl.java","lineNumber":505,"sourceCode":"     * Only replace path params in path of URI. This changes state of URIBuilder.\n     *\n     * @param name parameter name\n     * @param value parameter value\n     * @param isEncoded encoded flag\n     * @return uri builder\n     */\n    public UriBuilder substitutePathParam(String name, Object value, boolean isEncoded) {\n        if (path != null) {\n            StringBuilder builder = new StringBuilder();\n            replacePathParameter(name, value.toString(), isEncoded, path, builder, false);\n            path = builder.toString();\n        }\n        return this;\n    }\n\n    public URI buildFromMap(Map<String, ? extends Object> values) throws IllegalArgumentException, UriBuilderException {\n        if (values == null)\n            throw new IllegalArgumentException(\"Values parameter is null\");\n        return buildUriFromMap(values, false, true);\n    }\n\n    public URI buildFromEncodedMap(Map<String, ? extends Object> values) throws IllegalArgumentException, UriBuilderException {\n        if (values == null)\n            throw new IllegalArgumentException(\"Values parameter is null\");\n        return buildUriFromMap(values, true, false);\n    }\n\n    public URI buildFromMap(Map<String, ?> values, boolean encodeSlashInPath)\n            throws IllegalArgumentException, UriBuilderException {\n        if (values == null)\n            throw new IllegalArgumentException(\"Values parameter is null\");\n        return buildUriFromMap(values, false, encodeSlashInPath);\n    }\n\n    protected URI buildUriFromMap(Map<String, ? extends Object> paramMap, boolean fromEncodedMap, boolean encodeSlash)\n            throws IllegalArgumentException, UriBuilderException {","sourceCodeStart":487,"sourceCodeEnd":523,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/UriBuilderImpl.java#L487-L523","documentation":"UriBuilderImpl.buildFromMap(Map) requires a non-null map of URI template variables; a null map is rejected with this IllegalArgumentException before template resolution begins. The JAX-RS UriBuilder API treats a null values map as a programming error rather than an empty substitution set.","triggerScenarios":"Calling buildFromMap(null) or passing a Map variable that is null because an upstream lookup/parse produced no map.","commonSituations":"Deserializing template parameters from JSON/config that came back null; a method parameter threaded through several layers and left unset; frameworks that pass null to mean 'no params' (use an empty map instead).","solutions":["Pass an empty map (Map.of() / Collections.emptyMap()) when there are no template values.","Null-check or default the map before the call: values == null ? Map.of() : values.","Fix the upstream code that produces the null map.","Alternatively call build() with positional values if you have no named parameters."],"exampleFix":"// before\nURI uri = builder.buildFromMap(params); // params null\n// after\nURI uri = builder.buildFromMap(params != null ? params : Map.of());","handlingStrategy":"validation","validationCode":"Map<String, Object> safeValues = values == null ? Map.of() : values;\nURI uri = builder.buildFromMap(safeValues);","typeGuard":"static <V> Map<String, V> nullSafe(Map<String, V> m) {\n    return m == null ? Map.of() : m;\n}","tryCatchPattern":"try {\n    uri = builder.buildFromMap(values);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().equals(\"Values parameter is null\")) {\n        uri = builder.build();\n    } else {\n        throw e;\n    }\n}","preventionTips":["Default maps to empty rather than null at creation sites","Treat 'no parameters' as an empty map, never null","Null-check maps deserialized from config/JSON","Validate template variable maps at API boundaries"],"tags":["jaxrs","resteasy-reactive","uribuilder","null-check"],"backgroundTag":"null-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"}