{"record":{"id":"a411418f0e5d5ef2","repo":"quarkusio/quarkus","slug":"segment-parameter-is-null","errorCode":null,"errorMessage":"Segment parameter is null","messagePattern":"Segment 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":1048,"sourceCode":"    public String getUserInfo() {\n        return userInfo;\n    }\n\n    public String getPath() {\n        return path;\n    }\n\n    public String getQuery() {\n        return query;\n    }\n\n    public String getFragment() {\n        return fragment;\n    }\n\n    public UriBuilder segment(String... segments) throws IllegalArgumentException {\n        if (segments == null)\n            throw new IllegalArgumentException(\"Segment parameter is null\");\n        for (String segment : segments) {\n            if (segment == null)\n                throw new IllegalArgumentException(\"Segment is null\");\n            path(Encode.encodePathSegment(segment));\n        }\n        return this;\n    }\n\n    public URI buildFromEncoded(Object... values) throws IllegalArgumentException, UriBuilderException {\n        if (values == null)\n            throw new IllegalArgumentException(\"Values is null\");\n        return buildFromValues(false, true, values);\n    }\n\n    public UriBuilder replacePath(String path) {\n        if (path == null) {\n            this.path = null;\n            return this;","sourceCodeStart":1030,"sourceCodeEnd":1066,"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#L1030-L1066","documentation":"UriBuilderImpl.segment(segments) throws IllegalArgumentException(\"Segment parameter is null\") when the segments varargs array itself is null (a distinct message from \"Segment is null\", which covers an individual null element). Path segments are required to construct a valid URI path.","triggerScenarios":"Calling segment((String[]) null) or segment(someArray) where someArray is a null String[]/varargs array.","commonSituations":"Passing a path-parts array from parsed config or a split operation that returned null; varargs misuse where a single null literal becomes a null array.","solutions":["Pass at least one non-null string or call a path-building method instead","Guard: if (segments != null) builder.segment(segments)","Initialize the segments array before use","Default to an empty array for optional path parts"],"exampleFix":"// before\nbuilder.segment(parts); // parts == null\n// after\nif (parts != null) builder.segment(parts);","handlingStrategy":"validation","validationCode":"if (segments == null || Arrays.stream(segments).anyMatch(Objects::isNull)) { throw new IllegalArgumentException(\"segments must be non-null\"); }","typeGuard":"boolean isValidSegments(String[] segments) { return segments != null && Arrays.stream(segments).allMatch(s -> s != null && !s.isEmpty()); }","tryCatchPattern":"try { builder.segment(segments); } catch (IllegalArgumentException e) { if (e.getMessage().contains(\"Segment\")) { /* fix or skip segment list */ } else throw e; }","preventionTips":["Default path-part arrays to String[0] instead of null","Filter null/empty entries before segment()","Validate both the array and its elements — segment() checks both with different messages"],"tags":["jaxrs","uribuilder","null-check","path-segments","resteasy-reactive"],"backgroundTag":"null-argument-validation","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"}