Hello plugin developers.

Abstract:
you should not use @AncestorInPath AbstractItem,
but should use @AncestorInPath AbstractProject
in Descriptor.doXXXX in builders and publishers.

Details:
We usually use StaplerRequest.findAncestorObject or @AncestorInPath
to retrieve the project instance in Descriptor.doXXXX.
You should use not AbstractItem or Item, but AbstractProject or Job for its 
type,
or you would retrieve an unexpected object when used with Cloudbees 
Templates plugin.
http://www.cloudbees.com/jenkins-enterprise-by-cloudbees-features-templates-plugin.cb

Good code:
    public FormValidation doCheckXXX(   
        @AncestorInPath AbstractItem project, @QueryParameter String value) 
{

Bad code:
    public FormValidation doCheckXXX(   
        @AncestorInPath AbstractProject project, @QueryParameter String 
value) {

Cloudbees Templates plugin injects an AbstractItem object into the stapler 
path.
Please see following pages for more details:
https://issues.jenkins-ci.org/browse/JENKINS-22856
https://issues.jenkins-ci.org/browse/JENKINS-22828
https://github.com/jenkinsci/copyartifact-plugin/pull/36

I know copyartifact plugin and parameterized trigger plugin are
affected by this problem (They will be fixed in the next releases).
As they are popular plugins, I worry that there can be other affected 
plugins.
Please have a look on your maintaining plugins.

Thanks.
ikedam

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to