Skip to content
Browse files

Set version to 0.4.0 and update links

  • Loading branch information...
1 parent 909b9de commit 8c0797b111508c59fdc42ca0f725128470ce8e55 @krasserm krasserm committed Nov 1, 2012
Showing with 14 additions and 14 deletions.
  1. +12 −12 README.md
  2. +2 −2 project/ExampleBuild.scala
View
24 README.md
@@ -1,31 +1,31 @@
Overview
--------
-This project demonstrates how to implement an [event-sourced](http://martinfowler.com/eaaDev/EventSourcing.html) web application based on the Eligosource [Eventsourced](https://github.com/eligosource/eventsourced) library. It is based on [former work](https://github.com/krasserm/eventsourcing-example) that has been described in the articles
+This project demonstrates how to implement an [event-sourced](http://martinfowler.com/eaaDev/EventSourcing.html) web application based on the Eligosource [Eventsourced](https://github.com/eligosource/eventsourced/tree/release-0.4) library. It is based on [former work](https://github.com/krasserm/eventsourcing-example) that has been described in the articles
- [Building an Event-Sourced Web Application - Part 1: Domain Model, Events and State](http://krasserm.blogspot.com/2011/11/building-event-sourced-web-application.html)
- [Building an Event-Sourced Web Application - Part 2: Projections, Persistence, Consumers and Web Interface](http://krasserm.blogspot.com/2012/01/building-event-sourced-web-application.html)
Compared to the [old implementation](https://github.com/krasserm/eventsourcing-example), the whole service and persistence layer have been re-written and the domain events are now decoupled from the immutable domain model. The web UI and the web API remain unchanged.
-The example web application uses the [Eventsourced](https://github.com/eligosource/eventsourced) library for both event-sourcing and command-sourcing. Furthermore, it implements the [CQRS](http://martinfowler.com/bliki/CQRS.html) pattern and follows [domain-driven design](http://domaindrivendesign.org/resources/what_is_ddd) principles.
+The example web application uses the [Eventsourced](https://github.com/eligosource/eventsourced/tree/release-0.4) library for both event-sourcing and command-sourcing. Furthermore, it implements the [CQRS](http://martinfowler.com/bliki/CQRS.html) pattern and follows [domain-driven design](http://domaindrivendesign.org/resources/what_is_ddd) principles.
-![Architecture](https://raw.github.com/eligosource/eventsourced-example/master/doc/images/architecture.png)
+![Architecture](https://raw.github.com/eligosource/eventsourced-example/release-0.4/doc/images/architecture.png)
Legend:
-![Legend](https://raw.github.com/eligosource/eventsourced/master/doc/images/legend.png)
+![Legend](https://raw.github.com/eligosource/eventsourced/release-0.4/doc/images/legend.png)
-- The [domain model](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/domain/Invoice.scala) is a rich, immutable domain model. It is annotated with [JAXB](http://jcp.org/en/jsr/detail?id=222) annotations for XML and JSON binding.
-- The [service layer](https://github.com/eligosource/eventsourced-example/tree/master/src/main/scala/org/eligosource/eventsourced/example/service) implements the event-sourced and command-sourced actors (processors) together with service facades for asynchronous writes and synchronous, non-blocking reads of application state.
+- The [domain model](https://github.com/eligosource/eventsourced-example/blob/release-0.4/src/main/scala/org/eligosource/eventsourced/example/domain/Invoice.scala) is a rich, immutable domain model. It is annotated with [JAXB](http://jcp.org/en/jsr/detail?id=222) annotations for XML and JSON binding.
+- The [service layer](https://github.com/eligosource/eventsourced-example/tree/release-0.4/src/main/scala/org/eligosource/eventsourced/example/service) implements the event-sourced and command-sourced actors (processors) together with service facades for asynchronous writes and synchronous, non-blocking reads of application state.
- Processors manage application state via [STM](http://nbronson.github.com/scala-stm/) references.
- For reading current state, services facades access STM references directly (concurrent reads).
- For updating current state, services facades access STM references via processors where a single STM reference is updated by a single processor ([single-writer-principle](http://mechanical-sympathy.blogspot.de/2011/09/single-writer-principle.html))
- - On the command-side of the implemented CQRS pattern is the [InvoiceService](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/service/InvoiceService.scala) that manages application state and serves consistent reads of invoices.
- - On the query side of the implemented CQRS pattern is the [StatisticsService](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/service/StatisticsService.scala), a read model that serves eventually consistent reads about invoice update statistics.
- - The [PaymentProcess](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/service/PaymentGateway.scala) is an example of a stateful, potentially long-running and event-sourced business process.
-- The [web layer](https://github.com/eligosource/eventsourced-example/tree/master/src/main/scala/org/eligosource/eventsourced/example/web) provides a RESTful service interface to application resources and supports HTML, XML and JSON representation formats. It is built on top of [Jersey](http://jersey.java.net/) and [Scalate](http://scalate.fusesource.org/). A [Play](http://www.playframework.org/)-based version will follow (which supports asynchronous responses in contrast to Jersey).
-- The [application configuration](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/server/Appserver.scala) wires the pieces together.
+ - On the command-side of the implemented CQRS pattern is the [InvoiceService](https://github.com/eligosource/eventsourced-example/blob/release-0.4/src/main/scala/org/eligosource/eventsourced/example/service/InvoiceService.scala) that manages application state and serves consistent reads of invoices.
+ - On the query side of the implemented CQRS pattern is the [StatisticsService](https://github.com/eligosource/eventsourced-example/blob/release-0.4/src/main/scala/org/eligosource/eventsourced/example/service/StatisticsService.scala), a read model that serves eventually consistent reads about invoice update statistics.
+ - The [PaymentProcess](https://github.com/eligosource/eventsourced-example/blob/release-0.4/src/main/scala/org/eligosource/eventsourced/example/service/PaymentGateway.scala) is an example of a stateful, potentially long-running and event-sourced business process.
+- The [web layer](https://github.com/eligosource/eventsourced-example/tree/release-0.4/src/main/scala/org/eligosource/eventsourced/example/web) provides a RESTful service interface to application resources and supports HTML, XML and JSON representation formats. It is built on top of [Jersey](http://jersey.java.net/) and [Scalate](http://scalate.fusesource.org/). A [Play](http://www.playframework.org/)-based version will follow (which supports asynchronous responses in contrast to Jersey).
+- The [application configuration](https://github.com/eligosource/eventsourced-example/blob/release-0.4/src/main/scala/org/eligosource/eventsourced/example/server/Appserver.scala) wires the pieces together.
Build
-----
@@ -53,7 +53,7 @@ The example application's RESTful service interface supports HTML, XML and JSON
Click on [http://localhost:8080/invoice/invoice-3](http://localhost:8080/invoice/invoice-3). Provided you have created an invoice with id `invoice-3` before, you should see something like
-![invoice-3](https://github.com/krasserm/eventsourcing-example/raw/master/doc/images/invoice-3.png)
+![invoice-3](https://github.com/krasserm/eventsourcing-example/raw/release-0.4/doc/images/invoice-3.png)
### XML
View
4 project/ExampleBuild.scala
@@ -8,7 +8,7 @@ import com.mojolly.scalate.ScalatePlugin.ScalateKeys._
object BuildSettings {
val buildOrganization = "dev.example"
- val buildVersion = "0.4-SNAPSHOT"
+ val buildVersion = "0.4.0"
val buildScalaVersion = "2.9.2"
val buildSettings = Defaults.defaultSettings ++ Seq (
@@ -50,7 +50,7 @@ object Dependencies {
lazy val jerseyJson = "com.sun.jersey" % "jersey-json" % Jersey % "compile"
lazy val jerseyServer = "com.sun.jersey" % "jersey-server" % Jersey % "compile"
lazy val jerseySpring = "com.sun.jersey.contribs" % "jersey-spring" % Jersey % "compile"
- lazy val eventsourced = "org.eligosource" %% "eventsourced" % "0.4-SNAPSHOT" % "compile"
+ lazy val eventsourced = "org.eligosource" %% "eventsourced" % "0.4.0" % "compile"
lazy val scalate = "org.fusesource.scalate" % "scalate-core" % "1.5.2" % "compile"
lazy val scalaStm = "org.scala-tools" %% "scala-stm" % "0.5" % "compile"
lazy val scalaz = "org.scalaz" %% "scalaz-core" % "6.0.4" % "compile"

0 comments on commit 8c0797b

Please sign in to comment.
Something went wrong with that request. Please try again.