• Icon: Task Task
    • Resolution: Fixed
    • Icon: Major Major
    • core
    • jenkins-2.194

      stapler-jelly currently depends on a patched version¹ of dom4j, the original of which was released thirteen years ago. Current releases support Java 8, etc.

      A simple

      diff --git a/jelly/pom.xml b/jelly/pom.xml
      index 8aa4ec8d7..725f2ba56 100644
      --- a/jelly/pom.xml
      +++ b/jelly/pom.xml
      @@ -32,9 +32,9 @@
             <artifactId>commons-collections</artifactId>
           </dependency>
           <dependency>
      -      <groupId>org.jenkins-ci.dom4j</groupId>
      +      <groupId>org.dom4j</groupId>
             <artifactId>dom4j</artifactId>
      -      <version>1.6.1-jenkins-4</version>
      +      <version>2.1.1</version>
           </dependency>
           <dependency><!-- only needed for annotations, hence optional -->
             <groupId>org.jvnet.maven-jellydoc-plugin</groupId>
      

      does not work because of an API added to HtmlWriter used by Stapler's HTMLWriterOutput.

      To be done:

      • Write a unit test for HTMLWriterOutput demonstrating whatever it is supposed to do.
      • Replace the missing setEnabled call. Perhaps just use Proxy to make a ContentHandler that dynamically switches between XMLWriter and HTMLWriter. That obviates the need for this patch. Close this PR accordingly.
      • File an upstream PR for the static keyword addition from that patch.
      • Update to 2.1.1 or newer. PR should link to this.
      • File an upstream PR for this minor-looking improvement.
      • Determine if this patch is even useful. If so, it can be done via the official getOmitElementCloseSet + setOmitElementCloseSet API.
      • Forget about this patch since JENKINS-13709 is just one of many evil consequences of using maven-plugin.
      • Recheck JENKINS-46616 which I think is not an issue in current library releases.

      danielbeck is there some epic or label for issues proposing to switch from forked to official versions of libraries in Jenkins?

      ¹Using a different GA, no less. Noticed here: causes mayhem for plugins depending on the database plugin.

          [JENKINS-53322] Remove patched dom4j from Stapler

          Daniel Beck added a comment -

          is there some epic or label for issues proposing to switch from forked to official versions of libraries in Jenkins?

          No such previous effort I'm aware of.

          Daniel Beck added a comment - is there some epic or label for issues proposing to switch from forked to official versions of libraries in Jenkins? No such previous effort I'm aware of.

          Jeff Thompson added a comment -

          I've been working on this one for a while, compiling different libraries and plugins and running tests and checks. The specific tasks or conclusions I've found are a little different from those originally reported, but the overview remains the same. The forked dom4j version we use is ancient and really isn't necessary. We can get rid of it with a relatively few, independent tweaks. That will get us on a better footing.

          I'll start pushing a few PRs to various components to prepare them. Once we actually make the switch there are a few other places we can clean up.

          Jeff Thompson added a comment - I've been working on this one for a while, compiling different libraries and plugins and running tests and checks. The specific tasks or conclusions I've found are a little different from those originally reported, but the overview remains the same. The forked dom4j version we use is ancient and really isn't necessary. We can get rid of it with a relatively few, independent tweaks. That will get us on a better footing. I'll start pushing a few PRs to various components to prepare them. Once we actually make the switch there are a few other places we can clean up.

          Jeff Thompson added a comment -

          PR in Stapler to change to standard dom4j: https://github.com/stapler/stapler/pull/164

          Enablement PR in Jenkins to old or new to work fine: https://github.com/jenkinsci/jenkins/pull/4089

          ec2-plugin PR to enable old or new to work fine: https://github.com/jenkinsci/ec2-plugin/pull/372 (Already merged)

          Additional PRs to come later to include the new versions.

          Jeff Thompson added a comment - PR in Stapler to change to standard dom4j:  https://github.com/stapler/stapler/pull/164 Enablement PR in Jenkins to old or new to work fine:  https://github.com/jenkinsci/jenkins/pull/4089 ec2-plugin PR to enable old or new to work fine:  https://github.com/jenkinsci/ec2-plugin/pull/372  (Already merged) Additional PRs to come later to include the new versions.

          Jeff Thompson added a comment -

          Stapler version 1.258 was released on 19 August 2019 containing changes to move to the standard dom4j library.

          Jenkins PR https://github.com/jenkinsci/jenkins/pull/4130 depends upon that version and removes dependency on the forked library. This PR is up for review.

          Jeff Thompson added a comment - Stapler version 1.258 was released on 19 August 2019 containing changes to move to the standard dom4j library. Jenkins PR  https://github.com/jenkinsci/jenkins/pull/4130  depends upon that version and removes dependency on the forked library. This PR is up for review.

            jthompson Jeff Thompson
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: