{"record":{"id":"872e6c7811be0928","repo":"opendataloader-project/opendataloader-pdf","slug":"option-content-safety-off-requires-at-least-one","errorCode":null,"errorMessage":"Option --content-safety-off requires at least one value. Supported values: all, hidden-text, off-page, tiny, hidden-ocg","messagePattern":"Option --content-safety-off requires at least one value\\. Supported values: all, hidden-text, off-page, tiny, hidden-ocg","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/cli/CLIOptions.java","lineNumber":526,"sourceCode":"            }\n            String method = methodValue.trim().toLowerCase(Locale.ROOT);\n            if (!Config.isValidTableMethod(method)) {\n                throw new IllegalArgumentException(\n                        String.format(\"Unsupported table method '%s'. Supported values: %s\",\n                                method, Config.getTableMethodOptions(\", \")));\n            }\n            config.setTableMethod(method);\n        }\n    }\n\n    private static void applyContentSafetyOption(Config config, CommandLine commandLine) {\n        if (!commandLine.hasOption(CONTENT_SAFETY_OFF_LONG_OPTION)) {\n            return;\n        }\n\n        String[] optionValues = commandLine.getOptionValues(CONTENT_SAFETY_OFF_LONG_OPTION);\n        if (optionValues == null || optionValues.length == 0) {\n            throw new IllegalArgumentException(\n                    \"Option --content-safety-off requires at least one value. Supported values: all, hidden-text, off-page, tiny, hidden-ocg\");\n        }\n\n        Set<String> values = parseOptionValues(optionValues);\n        if (values.isEmpty()) {\n            throw new IllegalArgumentException(\n                    \"Option --content-safety-off requires at least one value. Supported values: all, hidden-text, off-page, tiny, hidden-ocg\");\n        }\n\n        for (String value : values) {\n            switch (value) {\n                case \"hidden-text\":\n                    config.getFilterConfig().setFilterHiddenText(false);\n                    break;\n                case \"off-page\":\n                    config.getFilterConfig().setFilterOutOfPage(false);\n                    break;\n                case \"tiny\":","sourceCodeStart":508,"sourceCodeEnd":544,"githubUrl":"https://github.com/opendataloader-project/opendataloader-pdf/blob/a7789b8e77dd05e2b8659eb3ea12fc458f80bfb8/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/api/cli/CLIOptions.java#L508-L544","documentation":"First of two guards on --content-safety-off: fires when commandLine.getOptionValues returns null or a zero-length array, i.e. the option is present (hasOption true) but Apache Commons CLI attached no tokens at all. This flag accepts repeated/comma-separated values, so the array form is used; an absent value array is treated as a usage error rather than silently disabling nothing.","triggerScenarios":"Run `--content-safety-off` with no following token when the option is registered as requiring values, or a parse where the option is present but stripped of arguments.","commonSituations":"Option defined with a value-arity but invoked bare; a wrapper that injects the flag without its arguments; shell quoting that drops the argument list.","solutions":["Pass at least one value: `--content-safety-off hidden-text`.","Use multiple values: `--content-safety-off hidden-text,off-page` or repeat the flag.","Use `--content-safety-off all` to disable every filter."],"exampleFix":"// before\nopendataloader-pdf doc.pdf --content-safety-off\n// after\nopendataloader-pdf doc.pdf --content-safety-off all","handlingStrategy":"validation","validationCode":"String[] vals = commandLine.getOptionValues(\"content-safety-off\");\nif (commandLine.hasOption(\"content-safety-off\") && (vals == null || vals.length == 0)) {\n    throw new IllegalArgumentException(\"--content-safety-off needs at least one value\");\n}","typeGuard":"boolean hasContentSafetyValues(CommandLine cmd) {\n    String[] v = cmd.getOptionValues(\"content-safety-off\");\n    return v != null && v.length > 0;\n}","tryCatchPattern":"try {\n    CLIOptions.applyAllTo(config, cmd);\n} catch (IllegalArgumentException e) {\n    System.err.println(e.getMessage());\n    printUsage();\n    System.exit(2);\n}","preventionTips":["Always pair --content-safety-off with at least one filter token.","Use `all` to disable every filter in one token.","Confirm the option's value arity matches your Options registration when using addAllTo."],"tags":["cli","content-safety","validation","argument-parsing"],"backgroundTag":null,"analyzedSha":"a7789b8e77dd05e2b8659eb3ea12fc458f80bfb8","analyzedAt":"2026-08-14T05:22:03.953Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}