jenkins
jenkins copied to clipboard
[JENKINS-10693] Prevent name conflicts with top-level options
See JENKINS-10693.
Checkboxes for job names have a name
attribute matching the job name. If that's json
, that'll mess with the magic parameter for structured form submission populated by buildFormTree
. Other problematic names are names of other options, like recurse
or useincluderegex
: Setting the built-in option will include the job in the view, and/or vice versa.
The solution has two components:
- Add a prefix to each "dynamic" (job name) checkbox form field, so that they, based on their name as submitted as a form parameter by the browser, do not interfere with the magic
json
form field, or other top-level form fields accessed withStaplerRequest#getParameter
. For structured form submission, the prefixes are removed inbuildFormTree
usingshortenName
, so the generated JSON object doesn't include them, which is what counts. - Wrap the job name checkboxes in a new object
items
to prevent collisions in thejson
parameter at the top-level (e.g.recurse
would be a bad job name to have given https://github.com/jenkinsci/jenkins/blob/cb1bbc74dfa68879916441b76cb26bb4fb35c5e8/core/src/main/java/hudson/model/ListView.java#L445)
Proposed changelog entries
- Prevent problems with the view configuration form when job names are the same as other form field names.
Proposed upgrade guidelines
N/A
Submitter checklist
- [ ] (If applicable) Jira issue is well described
- [ ] Changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developer, depending on the change) and are in the imperative mood. Examples
- Fill-in the
Proposed changelog entries
section only if there are breaking changes or other changes which may require extra steps from users during the upgrade
- Fill-in the
- [ ] Appropriate autotests or explanation to why this change has no tests
- [ ] New public classes, fields, and methods are annotated with
@Restricted
or have@since TODO
Javadoc, as appropriate. - [ ] New deprecations are annotated with
@Deprecated(since = "TODO")
or@Deprecated(forRemoval = true, since = "TODO")
if applicable. - [ ] For dependency updates: links to external changelogs and, if possible, full diffs
Desired reviewers
@mention
Maintainer checklist
Before the changes are marked as ready-for-merge
:
- [ ] There are at least 2 approvals for the pull request and no outstanding requests for change
- [ ] Conversations in the pull request are over OR it is explicit that a reviewer does not block the change
- [ ] Changelog entries in the PR title and/or
Proposed changelog entries
are accurate, human-readable, and in the imperative mood - [ ] Proper changelog labels are set so that the changelog can be generated automatically
- [ ] If the change needs additional upgrade steps from users,
upgrade-guide-needed
label is set and there is aProposed upgrade guidelines
section in the PR title. (example) - [ ] If it would make sense to backport the change to LTS, a Jira issue must exist, be a Bug or Improvement, and be labeled as
lts-candidate
to be considered (see query).