{"record":{"id":"831e5c847bd8f1b2","repo":"projectlombok/lombok","slug":"invalid-identifier-trimmedname","errorCode":null,"errorMessage":"Invalid identifier ${trimmedName}","messagePattern":"Invalid identifier (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/core/lombok/core/configuration/IdentifierName.java","lineNumber":37,"sourceCode":" * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\npackage lombok.core.configuration;\n\nimport lombok.core.JavaIdentifiers;\n\npublic final class IdentifierName implements ConfigurationValueType {\n\tprivate final String name;\n\t\n\tprivate IdentifierName(String name) {\n\t\tthis.name = name;\n\t}\n\t\n\tpublic static IdentifierName valueOf(String name) {\n\t\tif (name == null || name.trim().isEmpty()) return null;\n\t\t\n\t\tString trimmedName = name.trim();\n\t\tif (!JavaIdentifiers.isValidJavaIdentifier(trimmedName)) throw new IllegalArgumentException(\"Invalid identifier \" + trimmedName);\n\t\treturn new IdentifierName(trimmedName);\n\t}\n\t\n\tpublic static String description() {\n\t\treturn \"identifier-name\";\n\t}\n\t\n\tpublic static String exampleValue() {\n\t\treturn \"<javaIdentifier>\";\n\t}\n\t\n\t@Override public boolean equals(Object obj) {\n\t\tif (!(obj instanceof IdentifierName)) return false;\n\t\treturn name.equals(((IdentifierName) obj).name);\n\t}\n\t\n\t@Override public int hashCode() {\n\t\treturn name.hashCode();","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/projectlombok/lombok/blob/6d6a3e9fec0a9555702561fbeb8eac836575116e/src/core/lombok/core/configuration/IdentifierName.java#L19-L55","documentation":"IdentifierName.valueOf validates that a configuration value is a valid Java identifier (via JavaIdentifiers.isValidJavaIdentifier) before wrapping it. Blank values return null, but any non-identifier text throws IllegalArgumentException.","triggerScenarios":"Calling IdentifierName.valueOf(String) with a trimmed string that is not a valid Java identifier — e.g. starts with a digit, contains dots, spaces, hyphens, or reserved characters.","commonSituations":"Using a fully qualified name (with dots) where only a simple identifier is allowed, typo'd field/method names like 'my-field' or '2fa' in lombok.config keys that expect an identifier.","solutions":["Provide a single valid Java identifier (letters, digits, _, $; not starting with a digit; not a keyword).","Remove package qualifiers or extra characters (dots, dashes, spaces).","If the key expects a type, use the configuration key that accepts a TypeName instead."],"exampleFix":"// before (lombok.config)\nlombok.someIdentifierKey = my.field.Name\n// after\nlombok.someIdentifierKey = Name","handlingStrategy":"validation","validationCode":"boolean isValidIdentifierName(String name) {\n  return name != null && !name.trim().isEmpty() && javax.lang.model.SourceVersion.isName(name.trim());\n}","typeGuard":null,"tryCatchPattern":"try {\n  IdentifierName id = IdentifierName.valueOf(raw);\n} catch (IllegalArgumentException e) {\n  // reject config value or fall back to default identifier\n}","preventionTips":["Use only single simple identifiers (no dots, dashes, spaces) for identifier-typed keys.","Never start the value with a digit; avoid Java keywords.","Use TypeName-typed keys when you need fully qualified types."],"tags":["lombok","configuration","identifier"],"backgroundTag":"invalid-identifier","analyzedSha":"6d6a3e9fec0a9555702561fbeb8eac836575116e","analyzedAt":"2026-09-07T23:18:01.841Z","contentChangedAt":"2026-09-07T23:18:01.841Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}