{"record":{"id":"2c26105bd65525d6","repo":"Activiti/Activiti","slug":"tablename-is-null","errorCode":null,"errorMessage":"tableName is null","messagePattern":"tableName is null","errorType":"validation","errorClass":"ActivitiIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetTableMetaDataCmd.java","lineNumber":38,"sourceCode":"import org.activiti.engine.impl.interceptor.Command;\nimport org.activiti.engine.impl.interceptor.CommandContext;\nimport org.activiti.engine.management.TableMetaData;\n\n/**\n\n */\npublic class GetTableMetaDataCmd implements Command<TableMetaData>, Serializable {\n\n    private static final long serialVersionUID = 1L;\n    protected String tableName;\n\n    public GetTableMetaDataCmd(String tableName) {\n        this.tableName = tableName;\n    }\n\n    public TableMetaData execute(CommandContext commandContext) {\n        if (tableName == null) {\n            throw new ActivitiIllegalArgumentException(\"tableName is null\");\n        }\n        return commandContext.getTableDataManager().getTableMetaData(tableName);\n    }\n}\n","sourceCodeStart":20,"sourceCodeEnd":43,"githubUrl":"https://github.com/Activiti/Activiti/blob/56435b1a97deeafdc09dd40074b056c89fba5a8a/activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetTableMetaDataCmd.java#L20-L43","documentation":"Thrown by GetTableMetaDataCmd.execute when tableName is null. Activiti rejects the missing argument with ActivitiIllegalArgumentException before delegating to TableDataManager.getTableMetaData, which needs the table name for a metadata query.","triggerScenarios":"Calling managementService.getTableMetaData(null); often the name was meant to come from managementService.getTableName(entityClass) or a table-name collection that produced null.","commonSituations":"Passing the wrong variable; dynamic table-name building that failed; incorrect iteration of managementService.getTables().","solutions":["Null/blank-check tableName before the call.","Get valid names from managementService.getTables() or managementService.getTableName(EntityClass.class).","Normalize case: table names are typically uppercase, e.g. 'ACT_RU_TASK'."],"exampleFix":"// before\nTableMetaData md = managementService.getTableMetaData(tableName);\n// after\nif (tableName == null || tableName.isBlank()) throw new IllegalArgumentException(\"tableName is required\");\nTableMetaData md = managementService.getTableMetaData(tableName.toUpperCase());","handlingStrategy":"validation","validationCode":"if (tableName == null || tableName.isBlank()) throw new IllegalArgumentException(\"tableName is required\");","typeGuard":"boolean isValidTableName(String name) {\n    return name != null && !name.isBlank();\n}","tryCatchPattern":null,"preventionTips":["Source table names from managementService.getTables().","Use uppercase Activiti table names (ACT_RU_TASK etc.).","Null-check any dynamically computed table name."],"tags":["activiti","null-argument","database","validation"],"backgroundTag":"null-argument","analyzedSha":"56435b1a97deeafdc09dd40074b056c89fba5a8a","analyzedAt":"2026-09-09T21:00:06.703Z","contentChangedAt":"2026-09-09T21:00:06.703Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}