{"record":{"id":"e6463072b80c2f63","repo":"JetBrains/intellij-community","slug":"replace-constructor-builder-error-invalid-builder-e64630","errorCode":null,"errorMessage":"replace.constructor.builder.error.invalid.builder.package.name","messagePattern":"replace\\.constructor\\.builder\\.error\\.invalid\\.builder\\.package\\.name","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"warning","filePath":"java/java-impl-refactorings/src/com/intellij/refactoring/replaceConstructorWithBuilder/ReplaceConstructorWithBuilderDialog.java","lineNumber":514,"sourceCode":"      if (!nameHelper.isIdentifier(parameterData.getFieldName())) {\n        throw new ConfigurationException(\n          JavaRefactoringBundle.message(\"replace.constructor.builder.error.invalid.field.name\", parameterData.getFieldName()));\n      }\n      if (!nameHelper.isIdentifier(parameterData.getSetterName())) {\n        throw new ConfigurationException(\n          JavaRefactoringBundle.message(\"replace.constructor.builder.error.invalid.setter.name\", parameterData.getSetterName()));\n      }\n    }\n    if (myCreateBuilderClassRadioButton.isSelected()) {\n      final String className = myNewClassName.getText().trim();\n      if (className.isEmpty()) throw new ConfigurationException(null);\n      if (!nameHelper.isQualifiedName(className)) {\n        throw new ConfigurationException(\n          JavaRefactoringBundle.message(\"replace.constructor.builder.error.invalid.builder.class.name\", className));\n      }\n      final String packageName = myPackageTextField.getText().trim();\n      if (!packageName.isEmpty() && !nameHelper.isQualifiedName(packageName)) {\n        throw new ConfigurationException(\n          JavaRefactoringBundle.message(\"replace.constructor.builder.error.invalid.builder.package.name\", packageName));\n      }\n    }\n    else {\n      final String qualifiedName = myExistentClassTF.getText().trim();\n      if (qualifiedName.isEmpty()) throw new ConfigurationException(null);\n      if (!nameHelper.isQualifiedName(qualifiedName)) {\n        throw new ConfigurationException(\n          JavaRefactoringBundle.message(\"replace.constructor.builder.error.invalid.builder.qualified.class.name\", qualifiedName));\n      }\n    }\n  }\n\n  private JScrollPane createTablePanel() {\n    myTableModel = new MyTableModel();\n    myTable = new JBTable(myTableModel);\n    myTable.setSurrendersFocusOnKeystroke(true);\n    myTable.getTableHeader().setReorderingAllowed(false);","sourceCodeStart":496,"sourceCodeEnd":532,"githubUrl":"https://github.com/JetBrains/intellij-community/blob/be881553f2a76ac8b4ea53950d93f0de78295c19/java/java-impl-refactorings/src/com/intellij/refactoring/replaceConstructorWithBuilder/ReplaceConstructorWithBuilderDialog.java#L496-L532","documentation":"Thrown by ReplaceConstructorWithBuilderDialog.canRun() (ReplaceConstructorWithBuilderDialog.java:514) in the create-new-builder branch when the package field is non-empty but fails PsiNameHelper.isQualifiedName. The generated builder class goes into this package; only the grammar is checked (empty package is permitted). Same ConfigurationException UX as the sibling checks.","triggerScenarios":"Replace Constructor with Builder with 'Create builder class' selected and a package field containing 'com acme', 'util.', '1pkg', or keyword segments.","commonSituations":"Typing a brand-new package with typos, trailing dot from completion, or pasting a package with a newline/space character.","solutions":["Correct the package field to dot-separated identifiers (or clear it for the default package).","Use the package picker to select an existing package.","Pre-validate non-empty input with PsiNameHelper.isQualifiedName()."],"exampleFix":"// before\n// package: com.acme. -> rejected\n\n// after\n// package: com.acme.builder","handlingStrategy":"validation","validationCode":"String pkg = myPackageTextField.getText().trim();\nif (!pkg.isEmpty() && !PsiNameHelper.getInstance(project).isQualifiedName(pkg)) {\n  // block before OK; empty package (default) is allowed\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pre-fill the package field from the constructor's containing class package.","Offer the package picker so the value is always a real, well-formed package."],"tags":["intellij","refactoring","builder","java","package-name","validation"],"backgroundTag":null,"analyzedSha":"be881553f2a76ac8b4ea53950d93f0de78295c19","analyzedAt":"2026-08-14T14:13:06.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}