Work on Release 2.5: Maven Archetype and Tutorial Examples

Klaus Wuestefeld <[email protected]> Thu, 10 Jan 2013 01:16:45 -0200
Newsgroups gmane.comp.java.prevayler
Message-ID <CAMAooZHWu6b_Hhs2jC9LK55fxw1trvqs59vgTRYvBoNh8BT-mw@mail.gmail.com>
Hi,

Below is a conversation I had with Karl Wettin, edited for brevity.

Klaus


----

Karl Wettin: i'll try to release 2.5 this weekend

Klaus Wuestefeld: Hi :)
Klaus Wuestefeld: Whats in 2.5 again?

Karl Wettin: mainly Prevalyer<PrevalenceBase> and no food taster

Klaus Wuestefeld: ah nice

Karl Wettin: and I'll write something on the website how to set up using
maven. perhaps even create an archetype that creates a maven project for you
Karl Wettin: feel free to take a look at the examples i wrote in november
if there is somehitng you think is missing, and if you want me to move it
to the git.

Klaus Wuestefeld: maven archetype? how does that work?

Karl Wettin: https://github.com/karlwettin/prevayler-examples
Karl Wettin:
http://maven.apache.org/guides/introduction/introduction-to-archetypes.html
Karl Wettin: basically you type
mvn archetype-prevayler:generate
Karl Wettin: and it will set up the project for you, create pom.xml, deps,
directories, example code etc

Klaus Wuestefeld: Very nice!
Klaus Wuestefeld: Im looking at the examples again now
Klaus Wuestefeld: Why are they in the test folder?
https://github.com/karlwettin/prevayler-examples/tree/master/src/test

Karl Wettin: because they are all demonstrated as unit tests with
assertions etc
Karl Wettin: but i'm listening if you have comments

Klaus Wuestefeld: Yes. I think it would be nice to have the examples in
Prevayler's git
Klaus Wuestefeld: Comments:
Klaus Wuestefeld: e101 is too abstract
Klaus Wuestefeld: People might think they have to use an "Entity" class or
extend Entity or something like that.
Klaus Wuestefeld: "Entity" is a kind of class you would expect in an
implementation of a persistence framework. Not in app code. That will
confuse people.
Klaus Wuestefeld: Please take a look at 2.2 Storing Objects, for example:
http://community.versant.com/Documentation/Reference/db4o-7.12/java/tutorial/
Klaus Wuestefeld: 2) Lets make all tests pass, even the ones that "fail".
Klaus Wuestefeld: With @Test(expected = Exception.class) //Note this test
expects an exception
Klaus Wuestefeld: Im talking about this:
https://github.com/karlwettin/prevayler-examples/blob/master/src/test/java/org/prevayler/examples/e102/E102Test.java
Klaus Wuestefeld: 3) Lets mention the possible sources of non-determinism:
using new Date(), currenTimeMillis(), nanoTime(), hashCode(), etc.
Klaus Wuestefeld:
https://github.com/karlwettin/prevayler-examples/blob/master/src/test/java/org/prevayler/examples/e102/README.md
Klaus Wuestefeld: I like the way you present each caveat as a test.
Klaus Wuestefeld: 4)
https://github.com/karlwettin/prevayler-examples/tree/master/src/test/java/org/prevayler/examples/e103
Klaus Wuestefeld: "that your transactions shouldn't contain actual business
objects, only their identities."
Klaus Wuestefeld: "identities" is bad wording. Identity (as opposed to
equality) often refers to the object itself. Lets change it to "...only a
way to query for them, such as an id for example."
Klaus Wuestefeld: preavlent -> prevalent
Klaus Wuestefeld: "an aggregate of an business object to another business
object" is too abstract. Lets choose a metaphor and run with it: "a pilot
to a car", "a pet to the petstore", for example.
Klaus Wuestefeld: Please, lets change the wording from "baptism problem" to
"initiation problem". It's  more religion-neutral.
Klaus Wuestefeld: user is baptised -> user is initiated

Karl Wettin: +1
Karl Wettin: coming from a godless country and all, i've considered that
before.

Klaus Wuestefeld: Is that the only comment you agree on? :D

Karl Wettin: hehe no, all great comments
Karl Wettin: i'll fix them all

Klaus Wuestefeld: 5) On the sources of non determinism in E102 you can say:
"See E104 on using timestamps"
Klaus Wuestefeld: 6) E104: Not a caveat. It is a feature to help you cope
with caveat E102 so you dont have to put your own timestamps in your
transactions.
Klaus Wuestefeld: 7)
https://github.com/karlwettin/prevayler-examples/blob/master/src/test/java/org/prevayler/examples/e103/E103Test.javaDo
we need AbstractTest as a class? Cant it just be a method receiving
the
BaptismProblemUpdateEntityAggregate and UpdateEntityAggregate transaction
objects?
Klaus Wuestefeld: 8)
https://github.com/karlwettin/prevayler-examples/tree/master/src/test/java/org/prevayler/examples"e102,
Problems with non deterministic features in transactions."
Klaus Wuestefeld: -> "e102, Problems with non deterministic features in
business code."
Klaus Wuestefeld: Same here:
https://github.com/karlwettin/prevayler-examples/tree/master/src/test/java/org/prevayler/examples/e102
Klaus Wuestefeld: 9) You can use assertSame()
Klaus Wuestefeld: 10) finally: please delete E105. It is too alarming. In
the end, it is the same as E101: You have to use transactions. Simply add a
line of text to the description of E101: "If you change business objects
directly without using transactions, those changes will not be persistent.
You could, in theory, take a snapshot after every change but that is much
slower."
Klaus Wuestefeld: 11) Lets delete Prevayler demo1 (prime numbers) if it
still exists.
Klaus Wuestefeld: 12) Lets incorporate Prevayler demo2 (Bank Demo) in your
examples project somehow, maybe in the main folder (instead of tests)
Klaus Wuestefeld: 13) Lets remove javamatch from demo2 (Bank Demo) if we
have not already done so.
Klaus Wuestefeld: ------------------------------------------
Klaus Wuestefeld: Very nice :)

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712

_______________________________________________
To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
_______________________________________________
"Databases in Memoriam" -- http://www.prevayler.org