{"record":{"id":"8c626b3c6abc6096","repo":"theonedev/onedev","slug":"unexpected-setting-0","errorCode":null,"errorMessage":"Unexpected setting: {0}","messagePattern":"Unexpected setting: (.+?)","errorType":"http","errorClass":"NotAcceptableException","httpStatus":406,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/web/page/admin/pluginsettings/ContributedAdministrationSettingPage.java","lineNumber":59,"sourceCode":"\tpublic ContributedAdministrationSettingPage(PageParameters params) {\n\t\tsuper(params);\n\t\t\n\t\tString settingName = params.get(PARAM_SETTING).toString();\n\t\t\n\t\tfor (AdministrationSettingContribution contribution: \n\t\t\t\tOneDev.getExtensions(AdministrationSettingContribution.class)) {\n\t\t\tfor (Class<? extends ContributedAdministrationSetting> each: contribution.getSettingClasses()) {\n\t\t\t\tif (getSettingName(each).equals(settingName)) { \n\t\t\t\t\tsettingClass = each;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (settingClass != null)\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (settingClass == null)\n\t\t\tthrow new NotAcceptableException(MessageFormat.format(_T(\"Unexpected setting: {0}\"), settingName));\n\t}\n\n\tprivate SettingService getSettingService() {\n\t\treturn OneDev.getInstance(SettingService.class);\n\t}\n\t\n\t@Override\n\tprotected void onInitialize() {\n\t\tsuper.onInitialize();\n\t\t\n\t\tString help = EditableUtils.getDescription(settingClass);\n\t\tif (help != null)\n\t\t\tadd(new Label(\"help\", help).setEscapeModelStrings(false));\n\t\telse\n\t\t\tadd(new WebMarkupContainer(\"help\").setVisible(false));\n\t\t\n\t\tForm<?> form = new Form<Void>(\"form\") {\n","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/web/page/admin/pluginsettings/ContributedAdministrationSettingPage.java#L41-L77","documentation":"ContributedAdministrationSettingPage maps a setting name from page parameters to a contributed administration setting class. If no contribution registers a setting with that name, it throws NotAcceptableException with the setting name.","triggerScenarios":"Navigating to an administration settings URL whose settingName does not match any plugin-contributed administration setting (e.g. after a plugin was removed or renamed its setting).","commonSituations":"Bookmarked admin setting pages after uninstalling/disabling a plugin; version change where a plugin renamed its setting page; hand-typed URL.","solutions":["Use the Administration menu to reach the setting instead of a saved URL.","Reinstall/enable the plugin that contributes the setting.","Update links after plugin upgrades that renamed the setting."],"exampleFix":"// before: /~admin/oldPluginSetting (plugin removed)\n// after: open Admin menu and navigate to the contributed setting page","handlingStrategy":"fallback","validationCode":"// verify the setting exists before deep-linking\nvar supported = SettingService.getContributedAdministrationSettings();\nif (!supported.contains(settingName)) navigateToAdminMenu();","typeGuard":null,"tryCatchPattern":"try {\n    openAdminSetting(name);\n} catch (NotAcceptableException e) {\n    openAdminMenu();\n}","preventionTips":["Navigate settings via the Administration menu.","Re-check links after plugin install/remove/upgrade.","Keep plugins updated to versions matching the server."],"tags":["onedev","plugin","settings","not-found"],"backgroundTag":"invalid-query-parameter","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}