Jenkins classes are bound to URLs by using Stapler.
The singleton Jenkins
instance is bound to the context root (most of the time "/") URL, and the rest of the objects are bound according to their reachability from this root object.
Stapler uses reflection to recursively determine how to process any given URL.
A few examples of how the URL /foo/bar
could be processed:
A getFoo(String)
is defined on the Jenkins
object, and Stapler passes bar
as a parameter.
The object returned has a method called doIndex(…)
that gets called and renders the response.
getFoo()
is defined and returns an object that has a getBar
or doBar
method.
The object returned from that has an associated index.jelly
or index.groovy
view.
getFoo()
is defined and the returned object has a view named bar.jelly
or bar.groovy
defined.
doFoo()
is defined.
A number of additional ways to handle requests exist, but these are the most common.