Type-safe Prevayler, using generics

Naveen Chawla <[email protected]>
Newsgroups gmane.comp.java.prevayler
Message-ID <CAGs7EcUEhmQ1HA5xp27mmk+qBfxAipCaOaJ1YGYqKvmTNdc01Q@mail.gmail.com>
Small point, but by using generics, Prevayler has complete type-safety minus
casting. Took me longer than expected, but I've attempted this on Prevayler
source. I submitted a "fork" on the prevayler git -
https://github.com/Navigateur/prevayler - I'm not very good at git, but I
think that's how you want contributions submitted. Needs run time testing.
Demo and test code modified to match. Summary usage:

instead of
Prevayler prevayler
use
Prevayler<MyTypeToPrevail> prevayler

and instead of
PrevaylerFactory prevaylerFactory
use
PrevaylerFactory<MyTypeToPrevail> prevaylerFactory

For your custom transactions/queries:
replace
implements Transaction{
with
implements Transaction<MyTypeToPrevail>{

and
implements TransactionWithQuery{
with
implements TransactionWithQuery<MyTypeToPrevail, MyTypeToReturn>{
same for Query, SureTransactionWithQuery

Then, you don't do any casting from Object to prevalent type, nor from
".execute" to return type, as these arrive in native form.
("MyTypeToPrevail" is compiler-checked as implementing Serializable in all
the above cases)

i.e. instead of
(MyTypeToPrevail)prevalentSystem
you just use
prevalentSystem
and instead of
(MyTypeToReturn)prevayler.execute(...
you just use
prevayler.execute(...

It might even run faster due to lack of run time casting on each
transaction/query, who knows (not me). Hopefully you can test, and as soon
as it works immediately release it as an update, or at least an immediate
parallel choice as I really want this version now but with your genuine
backing.

------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev

_______________________________________________
To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
_______________________________________________
"Databases in Memoriam" -- http://www.prevayler.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.