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

Add a way to tell if an SCMFileSystem.Builder supports an SCMSource class, not just an instance

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Minor Minor
    • scm-api-plugin
    • None

      This has been annoying for me - I've got a thing that only wants to allow you to choose an SCMSource if that SCMSource has an SCMFileSystem.Builder implementation that's valid for it. SCMFileSystem#supports(SCMSource) (which calls Builder#supports(SCMSource) for each Builder extension) would be fine...except that I want to know which SCMSource implementations are valid in a configuration UI, meaning I don't have instances, just descriptors. So it'd be awfully handy to have Builder#supports(Class<? extends SCMSource>) or Builder#supports(SCMSourceDescriptor).

          [JENKINS-52964] Add a way to tell if an SCMFileSystem.Builder supports an SCMSource class, not just an instance

          Andrew Bayer added a comment -

          Maybe Builder#maySupport(SCMSourceDescriptor) would be the way to go - while most implementations in the wild (see the extensions list here just implement Builder#supports(SCMSource) with a simple return source instanceof SomeSCMSourceImpl, GitSCMTelescope actually cares about how the instance is configured. So in that case, there's no way to know definitively whether an SCMSourceDescriptor's SCMSource would be supported without an actual instance of the SCMSource. But I think we can live with that here - calling the new method maySupport implies that it's theoretically possible to use this SCMSourceDescriptor's SCMSource, but it doesn't make any promises that any particular config will be valid...

          Andrew Bayer added a comment - Maybe Builder#maySupport(SCMSourceDescriptor) would be the way to go - while most implementations in the wild (see the extensions list here just implement Builder#supports(SCMSource) with a simple return source instanceof SomeSCMSourceImpl , GitSCMTelescope actually cares about how the instance is configured. So in that case, there's no way to know definitively whether an SCMSourceDescriptor 's SCMSource would be supported without an actual instance of the SCMSource . But I think we can live with that here - calling the new method maySupport implies that it's theoretically possible to use this SCMSourceDescriptor 's SCMSource , but it doesn't make any promises that any particular config will be valid...

          Andrew Bayer added a comment -

          Got a possible approach, PRs incoming.

          Andrew Bayer added a comment - Got a possible approach, PRs incoming.

          Mark Waite added a comment -

          Included in git plugin 4.0.0 released Nov 2, 2019

          Mark Waite added a comment - Included in git plugin 4.0.0 released Nov 2, 2019

            abayer Andrew Bayer
            abayer Andrew Bayer
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: