Fork us on GitHub
×
Find plugins

Structs1.6Minimum Jenkins requirement: 1.580.1ID: structs

Installs: 93319
Last released: 10 days ago

Maintainers
jglick
Dependencies
No dependencies found

Plugin Information

Library plugin for DSL plugins that need concise names for Jenkins extensions

Overview

Jenkins has many DSL like plugins that require having short concise names for implementations of the extension points and other Jenkins objects. For example, Job DSL Plugin refers to each SCM extension by its short name. The same goes for pipeline plugin.

It benefits users that these DSL plugins use consistent names. This plugin, together with the @Symbol annotation, allow plugin developers to name their extension and have all the DSL plugins recognize them.

Usage for developers creating any plugins

To allow all the DSL plugins to refer to your extensions by the same name, put @Symbol annotation along side your @Extension. The symbol name must be a valid Java identifier, and it should be short and concise. To keep the symbol name short, it needs to be only unique within the extension point. For example, GitSCM and GitToolInstaller should both have a symbol name git, because they are from different extension points. For compatibility reasons with DSL plugins that predates the structs plugin, some extensions may have legacy names that do not follow this convention.

public class GitSCM {
   ...

   @Extension @Symbol("git")
   public static class DescriptorImpl extends SCMDescriptor {
      ...
   }
}

If you are targeting 1.x version of Jenkins, you must also add the following dependency to your plugin POM:

    <dependency>
        <groupId>org.jenkins-ci.plugins</groupId>
        <artifactId>structs</artifactId>
        <version>1.2</version>
    </dependency>

Usage for DSL plugin developers

Look up an extension by its symbol:

@Extension @Symbol("foo")
public class FooGlobalConfiguration extends GlobalConfiguration {
   ...
}

// this yields the FooGlobalConfiguration instance
SymbolLookup.get().find(GlobalConfiguration.class,"foo")

Construct a Describable object from a key/value pairs, much like how Structured Form Submission does it via @DataBoundConstructor:

new DescribableModel(Mailer.class).instantiate(Collections.singletonMap("recipients","kk@kohsuke.org"))

Changelog

Version 1.6 (Feb 13, 2017)

  • JENKINS-38157 Better diagnostics.
  • Allow Groovy GString to be used in more places.
  • API to check deprecation status of a type.

Version 1.5 (Aug 30, 2016)

Version 1.4 (Aug 26, 2016)

Version 1.3 (Jul 28, 2016)

Version 1.2.0 (Jun 17, 2016)

  • Added method to query deprecated methods (PR #5)
  • Improve diagnostics for mismatched types (JENKINS-34070)
  • Prevent recursions in the DescribableModel.toString() method (PR #3, related to JENKINS-32925)

Version 1.1.1 (Jun 16, 2016)

  • Fix URL to the plugin's Wiki page in order to get it listed in Jenkins Update Center again (JENKINS-JENKINS-35918)

Version 1.1 (Mar 22, 2016)

Version 1.0 (Mar 18, 2016)

  • initial version
ArchivesGet past versions
Labels
This plugin has no labels
Open Issues

See here for any open issues for this plugin.