Re: Work on Release 2.5: Maven Archetype and Tutorial Examples

Karl Wettin <[email protected]> Fri, 18 Jan 2013 03:31:27 +0100
Newsgroups gmane.comp.java.prevayler
Message-ID <[email protected]>
I just committed 

updates to the site (javadocs and new links):
<http://prevayler.org/>

the examples to the git repo:
<https://github.com/jsampson/prevayler/tree/master/demos/tutorial/src/test/java/org/prevayler/examples>

and a stand alone maven project I'll convert to a Maven archetype as soon as I get around to it: 
<https://github.com/jsampson/prevayler/tree/master/demos/prevayler-maven-archetype>


I suppose that makes 2.6 good enough for a public announcement? Comments?


		karl  zzZZzz

13 jan 2013 kl. 19:15 skrev Klaus Wuestefeld:

> OK
> 
> On Sun, Jan 13, 2013 at 12:07 PM, Karl Wettin <[email protected]> wrote:
>> Actually, it's 2.6 :-)
>> 
>> I didn't find time to fix the examples, I'll do that and move them to the
>> Prevayler git; create the archetype and update the website, sometime next
>> week.
>> 
>> I did however just released 2.6. The git repo is updated and targets should
>> be available via Maven central
>> <http://repo1.maven.org/maven2/org/prevayler/> within a few minutes, hours,
>> days or so. Let's not "go public" until everything above is fixed.
>> 
>> 
>> 
>> karl
>> 
>> 10 jan 2013 kl. 04:24 skrev Klaus Wuestefeld:
>> 
>> Karl, lets simply put the examples in Prevayler's test folder?
>> 
>> 
>> On Thu, Jan 10, 2013 at 1:16 AM, Klaus Wuestefeld
>> <[email protected]> wrote:
>>> 
>>> 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.java
>>> Do 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
>> 
>> 
>> 
>> ------------------------------------------------------------------------------
>> 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_123012
>> _______________________________________________
>> To unsubscribe go to the end of this page:
>> http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
>> _______________________________________________
>> "Databases in Memoriam" -- http://www.prevayler.org
>> 
> 
> 
> 
> -- 
> Valeu, Klaus.
> 
> ------------------------------------------------------------------------------
> 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_123012
> _______________________________________________
> To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
> _______________________________________________
> "Databases in Memoriam" -- http://www.prevayler.org

------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812

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