As per [1] , we've started reorganizing the codebase to distinguish
between default implementations (org.apache.isis.defaults) and
alternatives (org.apache.isis.alternatives). The terminology is
deliberately aligned with JSR-299; my current thinking is that all the
implementations in o.a.isis.alternatives will be annotated with
@Alternatives.
However... one thing that we currently support with our homegrown
implementation is to select the "most appropriate" implementation based
on something called the deployment type. So, if running in
"exploration" mode/deployment type, we set up a noop authentication and
an in-memory object store; if running in "prototype" mode then we
support file-based authentication and the in-memory object store; if
running in "production" mode then we set up file-based authentication
and the xml object store. These can all be overridden from the command
line, but these are the defaults.
I don't want to get too far ahead of myself here, but I'd just like to
know how JSR-299 can allow us to programmatically alter what the
defaults are. The use of @Default and @Alternative annotations suggests
that there's no opportunity to do this other than by altering the
classpath, but I'm hoping that I'm wrong here.
Thoughts?
Dan
[1] https://cwiki.apache.org/confluence/display/ISIS/MavenModules