{"record":{"id":"c9b995caf2e8936e","repo":"apache/maven","slug":"unable-to-parse-element-must-be-an-integer-c9b995","errorCode":null,"errorMessage":"Unable to parse element '{}', must be an integer","messagePattern":"Unable to parse element '(.+?)', must be an integer","errorType":"exception","errorClass":"XMLStreamException","httpStatus":null,"severity":"error","filePath":"src/mdo/reader.vm","lineNumber":951,"sourceCode":"    /**\n     * Method getIntegerValue.\n     *\n     * @param s a s object.\n     * @param strict a strict object.\n     * @param parser a parser object.\n     * @param attribute a attribute object.\n     * @throws XMLStreamException XMLStreamException if\n     * any.\n     * @return int\n     */\n    private int getIntegerValue(String s, String attribute, XMLStreamReader parser, boolean strict, int defaultValue)\n        throws XMLStreamException {\n        if (s != null) {\n            try {\n                return Integer.valueOf(s).intValue();\n            } catch (NumberFormatException nfe) {\n                if (strict) {\n                    throw new XMLStreamException(\"Unable to parse element '\" + attribute + \"', must be an integer\", parser.getLocation(), nfe);\n                }\n            }\n        }\n        return defaultValue;\n    } //-- int getIntegerValue(String, String, XMLStreamReader, boolean, int)\n\n    /**\n     * Method getLongValue.\n     *\n     * @param s a s object.\n     * @param strict a strict object.\n     * @param parser a parser object.\n     * @param attribute a attribute object.\n     * @throws XMLStreamException XMLStreamException if\n     * any.\n     * @return long\n     */\n    private long getLongValue(String s, String attribute, XMLStreamReader parser, boolean strict)","sourceCodeStart":933,"sourceCodeEnd":969,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/src/mdo/reader.vm#L933-L969","documentation":"Thrown by the Modello-generated StAX reader (template src/mdo/reader.vm) when a model XML field typed as int contains text Integer.valueOf(String) cannot parse. In strict mode getIntegerValue rethrows as javax.xml.stream.XMLStreamException ('must be an integer') with element name and location; non-strict parsing falls back to the supplied defaultValue (typically 0).","triggerScenarios":"Strict read of a model XML where an int field (e.g. <buildNumber>, retry counts, version-like numeric fields in maven-metadata.xml or toolchains.xml) is empty, contains '1.0', '12a', leading '+', or other non-integer text.","commonSituations":"Corrupted maven-metadata.xml in ~/.m2/repository after a failed download; files merged by version-control tools that garbled numeric fields; model versions where a field changed type; placeholder values never replaced in templates.","solutions":["Edit the file at the reported location and write a plain decimal integer.","For local-repository metadata, delete the whole artifact directory and let Maven re-resolve it.","Pass strict=false to the reader if defaulting is acceptable.","Check the writer/producer for locale-aware formatting (String.format without Locale.ROOT)."],"exampleFix":"<!-- before: ~/.m2/repository/.../maven-metadata.xml -->\n<buildNumber>7a</buildNumber>\n<!-- after -->\n<buildNumber>7</buildNumber>\n\n# or nuke the cache and re-resolve\nrm -rf ~/.m2/repository/com/example/broken-artifact","handlingStrategy":"validation","validationCode":"static boolean isPlainInt(String s) { return s != null && s.matches(\"[+-]?\\\\d+\"); }","typeGuard":null,"tryCatchPattern":"try {\n    Metadata md = new MetadataStaxReader().read(file, true);\n} catch (XMLStreamException e) {\n    Files.deleteIfExists(file.toPath()); // derived file: purge, re-resolve next run\n}","preventionTips":["Treat local-repository metadata as disposable; script cleanup of corrupted maven-metadata-*.xml.","Validate int fields in tools that generate model XML.","Avoid editing numeric fields through locale-aware editors."],"tags":["xml","stax","modello","number-format","metadata"],"backgroundTag":"xml-numeric-field-parse-failed","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}