Hello. Please bear with me, as I've only been working with Jenkins for a couple of days and am not yet familiar with the code and/or associated libraries.
I'm trying to write a plugin to allow the use of the Fossil SCM (http://fossil-scm.org). I've defined a few configuration values for a given job (in src/main/resources/hudson/plugins/albert/FossilSCM/config.jelly): <?xml version="1.0" encoding="UTF-8"?> <j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form"> <f:entry title="Repository URL" field="remote_url"> <f:textbox/> </f:entry> <f:entry title="Branch" field="branch"> <f:textbox default="trunk"/> </f:entry> <f:entry title="Repository database" field="repository_file"> <f:textbox/> </f:entry> </j:jelly> And have created the required FossilSCM class: public final class FossilSCM extends SCM { private final String remote_url; private final String branch; private final String repository_file; private static final Logger logger; static { logger = Logger.getLogger(FossilSCM.class.getName()); } @DataBoundConstructor public FossilSCM( final String remote_url, final String branch, final String repository_file) { this.remote_url = remote_url; this.branch = branch; this.repository_file = repository_file; FossilSCM.logger.log(Level.WARNING, "FossilSCM: " + this); } public String getBranch() { return this.branch; } public String getRemoteUrl() { return this.remote_url; } public String getRepositoryFile() { return this.repository_file; } /* ... */ } And the (apparently) required DescriptorImpl as a static inner class: @Extension public static final class DescriptorImpl extends SCMDescriptor<FossilSCM> { private static final Logger log; static { log = Logger.getLogger(DescriptorImpl.class.getName()); } public DescriptorImpl() { super(FossilSCM.class, null); this.load(); } /** * Called by the Jelly config form to validate the Fossil * repository URL field. * * Note that the name of this method is significant. */ @SuppressWarnings({ "static-method", "unused" }) public FormValidation doCheckRemoteUrl( @QueryParameter final String value) { DescriptorImpl.log.log(Level.WARNING, "doCheckRemoteUrl " + value); try { new URI(value); } catch (final URISyntaxException e) { return FormValidation.error("This is not a valid URI"); } return FormValidation.ok(); } @Override public String getDisplayName() { return "Fossil SCM"; } } Going by: https://wiki.jenkins-ci.org/display/JENKINS/Basic+guide+to+Jelly+usage+in+Jenkins#BasicguidetoJellyusageinJenkins-Formvalidation This should apparently be enough to validate the "remote_url" field. However, upon entering a value into the field and saving the job... Nothing happens. The doCheckRemoteUrl() method is never called and any value is accepted. What am I doing wrong? Is there better documentation available? I seem to be working entirely from out-of-date and/or incorrect examples. Regards, M
