I don't know if anyone has dealt with this yet, but dependency injection is a
popular concept these days. Spring is the best example of such a framework.
Some of Click's online examples are even based on Spring. However, Java EE has
a new standard called Contexts and Dependency Injection (CDI). This
specification has less dependence on XML than a typical Spring configuration.
That means you can add your classes to your project and CDI will automatically
detect them at startup. Detected classes can be filtered with qualifier
annotations.
Page interceptors can be automatically registered with Click by using standard
CDI annotations such as ApplicationScoped. Consider the following example:
@RequestScoped
public class TestInterceptor implements PageInterceptor {...}
I propose adding an extension to Click to support CDI technology. I have
already written working code to test this support, but I am not sure how to
submit it. Any help is appreciated.
On a separate but related subject, Click makes little use of annotations in its
configuration. The Bindable annotation makes request parameters easy to work
with, but there are other possible uses for annotations. They can also be used
for mapping a path to a page class. Consider the following example based on my
test code:
@PagePaths("test.htm")
public class TestPage extends Page {
}
This is a very simple example. As you can see, the name of the annotation is
PagePaths, implying that multiple paths can be mapped to the same class. Page
headers are another place where annotations would be useful. Click should have
a facility for detecting such annotations and including them in the overall
configuration.