I'm concerned about a couple things ...
1. You say you're not happy with the changes in PersistenceSessionFilter
which sounds ominous and to be honest I'm not even sure why you would
want to put any code in there. I much prefer the idea of putting the
code which checks if the application has been properly bootstrapped into
it's own filter. Call it the the BootstrapCheckFilter if you want. In
any case, i don't consider that logic to have anything to do with the
persistence session filter.
Also, in my mind this filter should be very simple, such as ...
if(RollerFactory.isBootstrapped()) {
chain.doFilter(req, res);
} else {
// app not bootstrapped yet, prompt for user involvement
response.sendRedirect(install/upgrade url);
}
2. I don't know what you actually put in your SQLScriptRunner,
DatabaseCreator, and DatabaseUpgrader classes but I would have thought
this code could be part of the DatabaseProvider. It would be nice to
have more details on how these classes work.
3. Why would we need users to restart or redeploy after doing the db
table work? In my mind that kind of defeats the purpose of making the
installation easy and really there should be no need for this.
4. I'm not sure exactly how your page flow is working. You have 3 new
actions defined but I don't understand how users get to each of them and
what happens after they take the action from each one.
My expectation is that there would be more of a unified experience such
that if the application has not been bootstrapped yet then the bootstrap
checking filter forwards all requests to a url such as
/roller-ui/bootstrap.rol to handle the bootstrapping process. From that
url you can walk through all parts of the process as needed i.e.
1. check that db connection works
2. do db table install/upgrade work
3. check that mail session works
4. everything is set, try bootstrapping application again
And these steps would basically be looped until the bootstrapping
process actually works. what i see so far doesn't seem to be as much of
a unified experience, but maybe i'm not understanding the flow?
I do think that all the pages that you are showing there look great
though and I definitely think they will be a huge improvement over our
current installation process.
-- Allen
Dave wrote:
I have already committed part of this work (e.g. DatabaseProvider and
MailProvider classes) and now I'm ready to commit the rest.
I updated the proposal with latest design, status notes and screenshots:
http://cwiki.apache.org/confluence/display/ROLLER/Proposal+Easy+Install
In particular, take a look at the section titled "Design for Option
#1: Property file based configuration" and anything marked READY TO
COMMIT.
I'm not entirely happy with the changes in PersistenceSessionFilter
but I'd like to get other's opinions on the code so I'm ready to
commit. I believe this is safe because the auto-install logic off by
default.
If there are no objections, I will commit the code later today.
- Dave