Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-53322

Remove patched dom4j from Stapler

    XMLWordPrintable

Details

    • jenkins-2.194

    Description

      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.

      Attachments

        Issue Links

          Activity

            danielbeck 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.

            danielbeck 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.
            jthompson 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.

            jthompson 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.
            jthompson 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.

            jthompson 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.
            jthompson 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 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.

            People

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

              Dates

                Created:
                Updated:
                Resolved: