You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2015/07/19 18:40:32 UTC

[6/6] zest-qi4j git commit: EventSourcing: licensing, formatting, some fixes in documentation

EventSourcing: licensing, formatting, some fixes in documentation


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/3a2f6c94
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/3a2f6c94
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/3a2f6c94

Branch: refs/heads/develop
Commit: 3a2f6c948faf2c1a10b9f4d8c20b18578a7d99be
Parents: 80c2895
Author: Paul Merlin <pa...@apache.org>
Authored: Sun Jul 19 18:38:33 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Sun Jul 19 18:38:33 2015 +0200

----------------------------------------------------------------------
 libraries/eventsourcing-jdbm/dev-status.xml     |   2 +-
 libraries/eventsourcing-rest/dev-status.xml     |   2 +-
 libraries/eventsourcing/dev-status.xml          |   2 +-
 .../eventsourcing/src/docs/eventsourcing.txt    |  41 ++++----
 .../MemoryApplicationEventStoreService.java     |  78 ++++++++------
 .../bootstrap/EventsourcingAssembler.java       |  45 +++++---
 .../application/ApplicationEventTest.java       | 102 ++++++++++---------
 .../src/docs/tutorials/howto-build-system.txt   |   4 +-
 manual/src/docs/userguide/libraries.txt         |   8 --
 9 files changed, 159 insertions(+), 125 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing-jdbm/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing-jdbm/dev-status.xml b/libraries/eventsourcing-jdbm/dev-status.xml
index 73eb6db..5adebd7 100644
--- a/libraries/eventsourcing-jdbm/dev-status.xml
+++ b/libraries/eventsourcing-jdbm/dev-status.xml
@@ -24,7 +24,7 @@
     <codebase>beta</codebase>
 
     <!-- none, brief, good, complete -->
-    <documentation>none</documentation>
+    <documentation>brief</documentation>
 
     <!-- none, some, good, complete -->
     <unittests>some</unittests>

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing-rest/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing-rest/dev-status.xml b/libraries/eventsourcing-rest/dev-status.xml
index 73eb6db..5adebd7 100644
--- a/libraries/eventsourcing-rest/dev-status.xml
+++ b/libraries/eventsourcing-rest/dev-status.xml
@@ -24,7 +24,7 @@
     <codebase>beta</codebase>
 
     <!-- none, brief, good, complete -->
-    <documentation>none</documentation>
+    <documentation>brief</documentation>
 
     <!-- none, some, good, complete -->
     <unittests>some</unittests>

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/dev-status.xml b/libraries/eventsourcing/dev-status.xml
index 73eb6db..5adebd7 100644
--- a/libraries/eventsourcing/dev-status.xml
+++ b/libraries/eventsourcing/dev-status.xml
@@ -24,7 +24,7 @@
     <codebase>beta</codebase>
 
     <!-- none, brief, good, complete -->
-    <documentation>none</documentation>
+    <documentation>brief</documentation>
 
     <!-- none, some, good, complete -->
     <unittests>some</unittests>

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing/src/docs/eventsourcing.txt
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/src/docs/eventsourcing.txt b/libraries/eventsourcing/src/docs/eventsourcing.txt
index d6a6263..6936ea5 100644
--- a/libraries/eventsourcing/src/docs/eventsourcing.txt
+++ b/libraries/eventsourcing/src/docs/eventsourcing.txt
@@ -25,26 +25,27 @@
 source=libraries/eventsourcing/dev-status.xml
 --------------
 
-The Event Sourcing Library supports generating, storing and replying two types of events: application-events and domain-events.
+The Event Sourcing Library supports generating, storing and replaying two types of events: application-events and domain-events.
 
-Application events are bound to usecase and are produced by execution of specific methods (ones with ApplicationEvent as their first parameter).
-Each application event holds information about usecase, method name and json serialized values of method parameters.
+Application events are bound to Usecase and are produced by execution of specific methods (ones with `ApplicationEvent` as their first parameter).
+Each application event holds information about Usecase, method name and JSON serialized values of method parameters.
 
-Domain events are bound to entity instances and are produced by execution of annotated (see @DomainEvent) method that belongs to EntityComposite.
-Each domain event (see DomainEventValue) holds information about entity type, identity, method name and json serialized values of method parameters.
+Domain events are bound to entity instances and are produced by execution of annotated (see `@DomainEvent`) methods that belongs to `EntityComposite`.
+Each domain event (see `DomainEventValue`) holds information about entity type, identity, method name and JSON serialized values of method parameters.
 
-Both application and domain events are captured during UnitOfWork lifetime and are stored in event store after successfully completed UnitOfWork as collection together (see UnitOfWorkDomainEventsValue and TransactionApplicationEvents).
+Both application and domain events are captured during `UnitOfWork` lifetime and are stored in `EventStore` after successfully completed `UnitOfWork` as collection together (see `UnitOfWorkDomainEventsValue` and `TransactionApplicationEvents`).
 
-There is support for replying events. When events are replied the same code is executed but no new events are generated.
+There is support for replaying events.
+When events are replayed the same code is executed but no new events are generated.
 
-There are helper classes that enables a service to easily track event feed, and
-for domain events there is event router that allow specify specification->receiver routes.
+There are helper classes that enables a service to easily track events feed, and for domain events there is `EventRouter` that allow to specify specification->receiver routes.
 
 include::../../build/docs/buildinfo/artifact.txt[]
 
 *JDBM backed store*
 
-Event store supports indexed and streamed access to events feed. There is in-memory and JDBM backed implementation.
+EventStore supports indexed and streamed access to events feed.
+There is in-memory and JDBM backed implementations.
 
 [devstatus]
 --------------
@@ -55,7 +56,7 @@ include::../../../eventsourcing-jdbm/build/docs/buildinfo/artifact.txt[]
 
 *REST access*
 
-For remote access to feed there is eventsourcing-rest library that exposes events as Atom feeds.
+For remote access to feed there is `eventsourcing-rest` library that exposes events as Atom feeds.
 
 [devstatus]
 --------------
@@ -75,21 +76,23 @@ source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/appl
 tag=assemblyAE
 ----
 
-configure application events store:
+Configure application events store:
 [snippet,java]
 ----
 source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
 tag=storeAE
 ----
 
-Actual method on composite which execution emits application event. First parameter is null on "normal" execution. If it is not null, then the method call is a replay of previously created events.
+Actual method on composite which execution emits application event.
+First parameter is `null` on "normal" execution.
+If it is not `null`, then the method call is a replay of previously created events.
 [snippet,java]
 ----
 source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
 tag=methodAE
 ----
 
-to enable execution capturing, you have to configure composite with concern:
+To enable execution capturing, you have to configure composite with concern:
 [snippet,java]
 ----
 source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
@@ -106,7 +109,7 @@ source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/doma
 tag=assemblyDE
 ----
 
-configure domain events store:
+Configure domain events store:
 
 [snippet,java]
 ----
@@ -114,19 +117,19 @@ source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/doma
 tag=storeDE
 ----
 
-annotate your entity state changing methods. Event methods may only change state. They may not fail or thrown exceptions:
+Annotate your entity state changing methods.
+Event methods may only change state.
+They may not fail or thrown exceptions:
 [snippet,java]
 ----
 source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/domain/DomainEventTest.java
 tag=methodDE
 ----
 
-to enable method execution capturing, you have to configure entity with concern:
+To enable method execution capturing, you have to configure entity with concern:
 
 [snippet,java]
 ----
 source=libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/domain/DomainEventTest.java
 tag=concernDE
 ----
-
-

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java b/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
index 698607f..cce6cf4 100644
--- a/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
+++ b/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.qi4j.library.eventsourcing.application.source.memory;
 
 import org.qi4j.api.activation.Activators;
@@ -14,89 +32,89 @@ import org.qi4j.library.eventsourcing.domain.api.UnitOfWorkDomainEventsValue;
 import java.io.IOException;
 import java.util.*;
 
-
 /**
  * In-Memory ApplicationEventStore. Mainly used for testing.
  */
-@Mixins(MemoryApplicationEventStoreService.MemoryStoreMixin.class)
-@Activators(ApplicationEventStoreActivation.Activator.class)
+@Mixins( MemoryApplicationEventStoreService.MemoryStoreMixin.class )
+@Activators( ApplicationEventStoreActivation.Activator.class )
 public interface MemoryApplicationEventStoreService
-        extends ApplicationEventSource, ApplicationEventStore, ApplicationEventStream, ApplicationEventStoreActivation, ServiceComposite
+    extends ApplicationEventSource, ApplicationEventStore, ApplicationEventStream, ApplicationEventStoreActivation, ServiceComposite
 {
-
     abstract class MemoryStoreMixin
-            extends AbstractApplicationEventStoreMixin
-            implements ApplicationEventSource, ApplicationEventStoreActivation
+        extends AbstractApplicationEventStoreMixin
+        implements ApplicationEventSource, ApplicationEventStoreActivation
     {
-
         // This list holds all transactions
         private LinkedList<TransactionApplicationEvents> store = new LinkedList<TransactionApplicationEvents>();
 
         @Override
-        public Input<TransactionApplicationEvents, IOException> transactionsAfter(final long afterTimestamp, final long maxTransactions)
+        public Input<TransactionApplicationEvents, IOException> transactionsAfter( final long afterTimestamp, final long maxTransactions )
         {
             return new Input<TransactionApplicationEvents, IOException>()
             {
                 @Override
-                public <ReceiverThrowableType extends Throwable> void transferTo(Output<? super TransactionApplicationEvents, ReceiverThrowableType> output) throws IOException, ReceiverThrowableType
+                public <ReceiverThrowableType extends Throwable> void transferTo( Output<? super TransactionApplicationEvents, ReceiverThrowableType> output )
+                    throws IOException, ReceiverThrowableType
                 {
                     // Lock store first
                     lock.lock();
                     try
                     {
-                        output.receiveFrom(new Sender<TransactionApplicationEvents, IOException>()
+                        output.receiveFrom( new Sender<TransactionApplicationEvents, IOException>()
                         {
                             @Override
-                            public <ReceiverThrowableType extends Throwable> void sendTo(Receiver<? super TransactionApplicationEvents, ReceiverThrowableType> receiver) throws ReceiverThrowableType, IOException
+                            public <ReceiverThrowableType extends Throwable> void sendTo( Receiver<? super TransactionApplicationEvents, ReceiverThrowableType> receiver )
+                                throws ReceiverThrowableType, IOException
                             {
                                 Iterator<TransactionApplicationEvents> iterator = store.iterator();
 
                                 long count = 0;
 
-                                while (iterator.hasNext() && count < maxTransactions)
+                                while( iterator.hasNext() && count < maxTransactions )
                                 {
                                     TransactionApplicationEvents next = iterator.next();
-                                    if (next.timestamp().get() > afterTimestamp)
+                                    if( next.timestamp().get() > afterTimestamp )
                                     {
-                                        receiver.receive(next);
+                                        receiver.receive( next );
                                         count++;
                                     }
                                 }
                             }
                         });
-                    } finally
+                    }
+                    finally
                     {
                         lock.unlock();
                     }
                 }
             };
-
         }
 
         @Override
-        public Input<TransactionApplicationEvents, IOException> transactionsBefore(final long beforeTimestamp, final long maxTransactions)
+        public Input<TransactionApplicationEvents, IOException> transactionsBefore( final long beforeTimestamp, final long maxTransactions )
         {
             return new Input<TransactionApplicationEvents, IOException>()
             {
                 @Override
-                public <ReceiverThrowableType extends Throwable> void transferTo(Output<? super TransactionApplicationEvents, ReceiverThrowableType> output) throws IOException, ReceiverThrowableType
+                public <ReceiverThrowableType extends Throwable> void transferTo( Output<? super TransactionApplicationEvents, ReceiverThrowableType> output )
+                    throws IOException, ReceiverThrowableType
                 {
                     // Lock store first
                     lock.lock();
                     try
                     {
-                        output.receiveFrom(new Sender<TransactionApplicationEvents, IOException>()
+                        output.receiveFrom( new Sender<TransactionApplicationEvents, IOException>()
                         {
                             @Override
-                            public <ReceiverThrowableType extends Throwable> void sendTo(Receiver<? super TransactionApplicationEvents, ReceiverThrowableType> receiver) throws ReceiverThrowableType, IOException
+                            public <ReceiverThrowableType extends Throwable> void sendTo( Receiver<? super TransactionApplicationEvents, ReceiverThrowableType> receiver )
+                                throws ReceiverThrowableType, IOException
                             {
-
                                 ListIterator<TransactionApplicationEvents> iterator = store.listIterator();
 
-                                while (iterator.hasNext())
+                                while( iterator.hasNext() )
                                 {
                                     TransactionApplicationEvents next = iterator.next();
-                                    if (next.timestamp().get() >= beforeTimestamp)
+                                    if( next.timestamp().get() >= beforeTimestamp )
                                     {
                                         break;
                                     }
@@ -104,29 +122,27 @@ public interface MemoryApplicationEventStoreService
 
                                 long count = 0;
 
-                                while (iterator.hasPrevious() && count < maxTransactions)
+                                while( iterator.hasPrevious() && count < maxTransactions )
                                 {
                                     TransactionApplicationEvents next = iterator.previous();
-                                    receiver.receive(next);
+                                    receiver.receive( next );
                                     count++;
                                 }
                             }
                         });
-                    } finally
+                    }
+                    finally
                     {
                         lock.unlock();
                     }
                 }
             };
-
         }
 
         @Override
-        protected void storeEvents(TransactionApplicationEvents transactionDomain) throws IOException
+        protected void storeEvents( TransactionApplicationEvents transactionDomain ) throws IOException
         {
             store.add(transactionDomain);
         }
-
     }
-
 }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/bootstrap/EventsourcingAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/bootstrap/EventsourcingAssembler.java b/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/bootstrap/EventsourcingAssembler.java
index 26d1af0..228d6de 100644
--- a/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/bootstrap/EventsourcingAssembler.java
+++ b/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/bootstrap/EventsourcingAssembler.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.qi4j.library.eventsourcing.bootstrap;
 
 import org.qi4j.bootstrap.Assemblers;
@@ -12,12 +30,9 @@ import org.qi4j.library.eventsourcing.domain.api.UnitOfWorkDomainEventsValue;
 import org.qi4j.library.eventsourcing.domain.factory.CurrentUserUoWPrincipal;
 import org.qi4j.library.eventsourcing.domain.factory.DomainEventFactoryService;
 
-
 public class EventsourcingAssembler
-        extends Assemblers.Visibility<EventsourcingAssembler>
+    extends Assemblers.Visibility<EventsourcingAssembler>
 {
-
-
     private boolean domainEvents;
     private boolean applicationEvents;
 
@@ -41,28 +56,26 @@ public class EventsourcingAssembler
         return this;
     }
 
-
     @Override
     public void assemble(ModuleAssembly module) throws AssemblyException
     {
-
-        if (domainEvents)
+        if( domainEvents )
         {
-            module.values(DomainEventValue.class, UnitOfWorkDomainEventsValue.class);
-            module.services(DomainEventFactoryService.class).visibleIn(visibility());
+            module.values( DomainEventValue.class, UnitOfWorkDomainEventsValue.class );
+            module.services( DomainEventFactoryService.class).visibleIn(visibility() );
         }
 
-        if (applicationEvents)
+        if( applicationEvents )
         {
-            module.values(ApplicationEvent.class, TransactionApplicationEvents.class);
-            module.services(ApplicationEventFactoryService.class).visibleIn(visibility());
+            module.values( ApplicationEvent.class, TransactionApplicationEvents.class );
+            module.services( ApplicationEventFactoryService.class ).visibleIn( visibility() );
         }
 
-        if (uowPrincipal)
+        if( uowPrincipal )
         {
-            module.importedServices(CurrentUserUoWPrincipal.class).importedBy(ImportedServiceDeclaration.NEW_OBJECT);
-            module.objects(CurrentUserUoWPrincipal.class);
+            module.importedServices( CurrentUserUoWPrincipal.class )
+                .importedBy( ImportedServiceDeclaration.NEW_OBJECT );
+            module.objects( CurrentUserUoWPrincipal.class );
         }
-
     }
 }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java b/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
index 480b7f3..f566db8 100644
--- a/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
+++ b/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.qi4j.library.eventsourcing.application;
 
 import org.junit.Test;
@@ -43,17 +61,14 @@ import static org.junit.Assert.assertEquals;
  * Subscription is not stored in domain model but is available via application events feed.
  */
 public class ApplicationEventTest
-        extends AbstractQi4jTest
+    extends AbstractQi4jTest
 {
-
     @Service
     ApplicationEventSource eventSource;
 
-
     @Override
-    public void assemble(ModuleAssembly module) throws AssemblyException
+    public void assemble( ModuleAssembly module ) throws AssemblyException
     {
-
         // START SNIPPET: assemblyAE
         new EventsourcingAssembler()
                 .withApplicationEvents()
@@ -62,16 +77,16 @@ public class ApplicationEventTest
         // END SNIPPET: assemblyAE
 
         // START SNIPPET: storeAE
-        module.services(MemoryApplicationEventStoreService.class);
+        module.services( MemoryApplicationEventStoreService.class );
         // END SNIPPET: storeAE
 
-        new EntityTestAssembler().assemble(module);
+        new EntityTestAssembler().assemble( module );
 
         // START SNIPPET: concernAE
-        module.transients(Users.class).withConcerns(ApplicationEventCreationConcern.class);
+        module.transients( Users.class ).withConcerns( ApplicationEventCreationConcern.class );
         // END SNIPPET: concernAE
 
-        module.entities(UserEntity.class);
+        module.entities( UserEntity.class );
 
     }
 
@@ -79,83 +94,84 @@ public class ApplicationEventTest
     @Test
     public void testApplicationEvent() throws UnitOfWorkCompletionException, IOException
     {
-        Users users = module.newTransient(Users.class);
+        Users users = module.newTransient( Users.class );
 
         Principal administratorPrincipal = new Principal()
         {
+            @Override
             public String getName()
             {
                 return "administrator";
             }
         };
 
-        UnitOfWork uow1 = module.newUnitOfWork(UsecaseBuilder.newUsecase("User signup"));
-        uow1.setMetaInfo(administratorPrincipal);
-        users.signup(null, "user1", Arrays.asList("news1", "news2"));
+        UnitOfWork uow1 = module.newUnitOfWork( UsecaseBuilder.newUsecase( "User signup" ) );
+        uow1.setMetaInfo( administratorPrincipal );
+        users.signup( null, "user1", Arrays.asList( "news1", "news2" ) );
         uow1.complete();
 
         UnitOfWork uow2 = module.newUnitOfWork();
-        uow2.setMetaInfo(administratorPrincipal);
-        users.signup(null, "user2", Collections.EMPTY_LIST);
+        uow2.setMetaInfo( administratorPrincipal );
+        users.signup( null, "user2", Collections.EMPTY_LIST );
         uow2.complete();
 
         UnitOfWork uow3 = module.newUnitOfWork();
-        uow3.setMetaInfo(administratorPrincipal);
-        users.signup(null, "user3", Collections.singletonList("news1"));
+        uow3.setMetaInfo( administratorPrincipal );
+        users.signup( null, "user3", Collections.singletonList( "news1" ) );
         uow3.complete();
 
 
         // receive events from uow2 and later forwards
         EventsInbox afterInbox = new EventsInbox();
-        eventSource.transactionsAfter(uow2.currentTime() - 1, Integer.MAX_VALUE).transferTo(afterInbox);
+        eventSource.transactionsAfter( uow2.currentTime() - 1, Integer.MAX_VALUE ).transferTo( afterInbox );
 
-        assertEquals(2, afterInbox.getEvents().size());
+        assertEquals( 2, afterInbox.getEvents().size() );
 
-        ApplicationEvent signupEvent2 = afterInbox.getEvents().get(0).events().get().get(0);
+        ApplicationEvent signupEvent2 = afterInbox.getEvents().get( 0 ).events().get().get( 0 );
 
-        assertEquals("signup", signupEvent2.name().get());
-        assertEquals("user2", ApplicationEventParameters.getParameter(signupEvent2, "param1"));
-        assertEquals("[]", ApplicationEventParameters.getParameter(signupEvent2, "param2"));
+        assertEquals( "signup", signupEvent2.name().get() );
+        assertEquals( "user2", ApplicationEventParameters.getParameter( signupEvent2, "param1" ) );
+        assertEquals( "[]", ApplicationEventParameters.getParameter( signupEvent2, "param2" ) );
 
         // receive events from uow2 backwards
         EventsInbox beforeInbox = new EventsInbox();
-        eventSource.transactionsBefore(uow3.currentTime(), Integer.MAX_VALUE).transferTo(beforeInbox);
+        eventSource.transactionsBefore( uow3.currentTime(), Integer.MAX_VALUE ).transferTo( beforeInbox );
 
-        assertEquals(2, beforeInbox.getEvents().size());
+        assertEquals( 2, beforeInbox.getEvents().size() );
 
-        ApplicationEvent signupEvent1 = beforeInbox.getEvents().get(1).events().get().get(0);
+        ApplicationEvent signupEvent1 = beforeInbox.getEvents().get( 1 ).events().get().get( 0 );
 
-        assertEquals("signup", signupEvent1.name().get());
-        assertEquals("user1", ApplicationEventParameters.getParameter(signupEvent1, "param1"));
-        assertEquals("[\"news1\",\"news2\"]", ApplicationEventParameters.getParameter(signupEvent1, "param2"));
+        assertEquals( "signup", signupEvent1.name().get());
+        assertEquals( "user1", ApplicationEventParameters.getParameter( signupEvent1, "param1" ) );
+        assertEquals( "[\"news1\",\"news2\"]", ApplicationEventParameters.getParameter( signupEvent1, "param2" ) );
 
 
     }
 
     static class EventsInbox implements Output<TransactionApplicationEvents, RuntimeException>
     {
-
         private List<TransactionApplicationEvents> events = new LinkedList<>();
 
         @Override
-        public <SenderThrowableType extends Throwable> void receiveFrom(Sender<? extends TransactionApplicationEvents, SenderThrowableType> sender) throws RuntimeException, SenderThrowableType
+        public <SenderThrowableType extends Throwable> void receiveFrom( Sender<? extends TransactionApplicationEvents, SenderThrowableType> sender )
+            throws RuntimeException, SenderThrowableType
         {
             try
             {
-                sender.sendTo(new Receiver<TransactionApplicationEvents, Throwable>()
+                sender.sendTo( new Receiver<TransactionApplicationEvents, Throwable>()
                 {
                     @Override
-                    public void receive(TransactionApplicationEvents item) throws Throwable
+                    public void receive( TransactionApplicationEvents item ) throws Throwable
                     {
                         events.add(item);
                     }
                 });
 
-            } catch (Throwable throwable)
+            }
+            catch( Throwable throwable )
             {
                 throwable.printStackTrace();
             }
-
         }
 
         public List<TransactionApplicationEvents> getEvents()
@@ -165,30 +181,27 @@ public class ApplicationEventTest
     }
 
     // START SNIPPET: methodAE
-    @Mixins(Users.Mixin.class)
+    @Mixins( Users.Mixin.class )
     public interface Users extends TransientComposite
     {
-
-        void signup(@Optional ApplicationEvent evt, String username, List<String> mailinglists);
+        void signup( @Optional ApplicationEvent evt, String username, List<String> mailinglists );
         // END SNIPPET: methodAE
 
         abstract class Mixin implements Users
         {
-
             @Structure
             UnitOfWorkFactory uowFactory;
 
             @Override
-            public void signup(ApplicationEvent evt, String username, List<String> mailinglists)
+            public void signup( ApplicationEvent evt, String username, List<String> mailinglists )
             {
                 if (evt == null)
                 {
                     UnitOfWork uow = uowFactory.currentUnitOfWork();
 
-                    EntityBuilder<UserEntity> builder = uow.newEntityBuilder(UserEntity.class);
-                    builder.instance().username().set(username);
+                    EntityBuilder<UserEntity> builder = uow.newEntityBuilder( UserEntity.class );
+                    builder.instance().username().set( username );
                     builder.newInstance();
-
                 }
             }
         }
@@ -197,10 +210,7 @@ public class ApplicationEventTest
     public interface UserEntity
             extends EntityComposite
     {
-
         @UseDefaults
         Property<String> username();
-
     }
-
 }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/manual/src/docs/tutorials/howto-build-system.txt
----------------------------------------------------------------------
diff --git a/manual/src/docs/tutorials/howto-build-system.txt b/manual/src/docs/tutorials/howto-build-system.txt
index 2fa78b5..f5e3a2b 100644
--- a/manual/src/docs/tutorials/howto-build-system.txt
+++ b/manual/src/docs/tutorials/howto-build-system.txt
@@ -131,11 +131,11 @@ If a +version+ property is not defined, the build system will refuse to make a r
 
 == Tests ==
 
+NOTE: See the https://builds.apache.org/view/S-Z/view/Zest/[Zestâ„¢ Continuous Integration] for current tests results
+
 Unit and integration tests are located near the code under test.
 You'll find theses tests across the whole SDK.
 
-NOTE: See the https://builds.apache.org/view/S-Z/view/Zest/[Zestâ„¢ Continuous Integration] for current tests results
-
 === Unit tests requiring external services ===
 
 Among unit tests, some require an external service to be run.

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3a2f6c94/manual/src/docs/userguide/libraries.txt
----------------------------------------------------------------------
diff --git a/manual/src/docs/userguide/libraries.txt b/manual/src/docs/userguide/libraries.txt
index 7157e37..b13ac39 100644
--- a/manual/src/docs/userguide/libraries.txt
+++ b/manual/src/docs/userguide/libraries.txt
@@ -63,14 +63,6 @@ include::../../../../libraries/eventsourcing/src/docs/eventsourcing.txt[]
 
 :leveloffset: 2
 
-include::../../../../libraries/eventsourcing-jdbm/src/docs/eventsourcing-jdbm.txt[]
-
-:leveloffset: 2
-
-include::../../../../libraries/eventsourcing-rest/src/docs/eventsourcing-rest.txt[]
-
-:leveloffset: 2
-
 include::../../../../libraries/fileconfig/src/docs/fileconfig.txt[]
 
 :leveloffset: 2