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

    Details

    • Type: Improvement
    • Status: Fixed but Unreleased (View Workflow)
    • Priority: Minor
    • Resolution: Fixed
    • Component/s: scm-api-plugin
    • Labels:
      None
    • Similar Issues:

      Description

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

        Attachments

          Issue Links

            Activity

            Hide
            abayer Andrew Bayer added a comment -

            Got a possible approach, PRs incoming.

            Show
            abayer Andrew Bayer added a comment - Got a possible approach, PRs incoming.
            Hide
            abayer 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...

            Show
            abayer 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...

              People

              • Assignee:
                abayer Andrew Bayer
                Reporter:
                abayer Andrew Bayer
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: