You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2017/05/29 14:51:26 UTC

cayenne git commit: CAY-2302 Rename PostCommit module and its content to CommitLog

Repository: cayenne
Updated Branches:
  refs/heads/master 45ca61a0e -> 175ec07f6


CAY-2302 Rename PostCommit module and its content to CommitLog

* javadocs
* moving builder method from builder to the root module, renaming it to "extend"


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/175ec07f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/175ec07f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/175ec07f

Branch: refs/heads/master
Commit: 175ec07f69446ea89c8ed8ec338b29d45f95821e
Parents: 45ca61a
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Mon May 29 17:36:53 2017 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Mon May 29 17:51:21 2017 +0300

----------------------------------------------------------------------
 .../cayenne/commitlog/CommitLogModule.java      |  16 ++-
 .../commitlog/CommitLogModuleBuilder.java       | 136 -------------------
 .../commitlog/CommitLogModuleExtender.java      | 132 ++++++++++++++++++
 .../commitlog/CommitLogFilter_AllIT.java        |  27 ++--
 .../CommitLogFilter_All_FlattenedIT.java        |  25 ++--
 .../commitlog/CommitLogFilter_FilteredIT.java   |  32 ++---
 ...ommitLogFilter_ListenerInducedChangesIT.java |  32 ++---
 .../commitlog/CommitLogFilter_OutsideTxIT.java  |  20 +--
 .../cayenne/commitlog/CommitLogFilter_TxIT.java |  20 +--
 .../commitlog/CommitLogModuleBuilderTest.java   |  16 +--
 10 files changed, 222 insertions(+), 234 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModule.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModule.java b/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModule.java
index 1a387c3..a1b4e9d 100644
--- a/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModule.java
+++ b/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModule.java
@@ -26,14 +26,28 @@ import org.apache.cayenne.commitlog.meta.IncludeAllCommitLogEntityFactory;
 import org.apache.cayenne.commitlog.meta.CommitLogEntityFactory;
 
 /**
+ * Auto-loadable module that enables gathering of commit log information for Cayenne stack. To add custom listeners to
+ * receive commit log events, implement {@link CommitLogListener} and register it using {@link CommitLogModule#extend()}.
+ *
  * @since 4.0
  */
-public class CommitLogModule implements Module{
+public class CommitLogModule implements Module {
 
     public static ListBuilder<CommitLogListener> contributeListeners(Binder binder) {
         return binder.bindList(CommitLogListener.class);
     }
 
+    /**
+     * Starts an extensions module builder to add listeners to {@link CommitLogModule} and/or otherwise customize this
+     * module.
+     *
+     * @return a new builder of {@link CommitLogModule} extensions.
+     * @see CommitLogListener
+     */
+    public static CommitLogModuleExtender extend() {
+        return new CommitLogModuleExtender();
+    }
+
     @Override
     public void configure(Binder binder) {
         contributeListeners(binder);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleBuilder.java b/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleBuilder.java
deleted file mode 100644
index 9bd0f7f..0000000
--- a/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleBuilder.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*****************************************************************
- *   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.apache.cayenne.commitlog;
-
-import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.ListBuilder;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.commitlog.meta.AnnotationCommitLogEntityFactory;
-import org.apache.cayenne.commitlog.meta.IncludeAllCommitLogEntityFactory;
-import org.apache.cayenne.commitlog.meta.CommitLogEntity;
-import org.apache.cayenne.commitlog.meta.CommitLogEntityFactory;
-import org.apache.cayenne.tx.TransactionFilter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-/**
- * A builder of a module that integrates {@link CommitLogFilter} and
- * {@link CommitLogListener} in Cayenne.
- * 
- * @since 4.0
- */
-public class CommitLogModuleBuilder {
-
-	private static final Logger LOGGER = LoggerFactory.getLogger(CommitLogModuleBuilder.class);
-
-	public static CommitLogModuleBuilder builder() {
-		return new CommitLogModuleBuilder();
-	}
-
-	private Class<? extends CommitLogEntityFactory> entityFactoryType;
-	private Collection<Class<? extends CommitLogListener>> listenerTypes;
-	private Collection<CommitLogListener> listenerInstances;
-	private boolean excludeFromTransaction;
-
-	CommitLogModuleBuilder() {
-		entityFactory(IncludeAllCommitLogEntityFactory.class);
-		this.listenerTypes = new HashSet<>();
-		this.listenerInstances = new HashSet<>();
-	}
-
-	public CommitLogModuleBuilder listener(Class<? extends CommitLogListener> type) {
-		this.listenerTypes.add(type);
-		return this;
-	}
-
-	public CommitLogModuleBuilder listener(CommitLogListener instance) {
-		this.listenerInstances.add(instance);
-		return this;
-	}
-
-	/**
-	 * If called, events will be dispatched outside of the main commit
-	 * transaction. By default events are dispatched within the transaction, so
-	 * listeners can commit their code together with the main commit.
-	 */
-	public CommitLogModuleBuilder excludeFromTransaction() {
-		this.excludeFromTransaction = true;
-		return this;
-	}
-
-	/**
-	 * Installs entity filter that would only include entities annotated with
-	 * {@link CommitLog} on the callbacks. Also {@link CommitLog#confidential()}
-	 * properties will be obfuscated and {@link CommitLog#ignoredProperties()} -
-	 * excluded from the change collection.
-	 */
-	public CommitLogModuleBuilder commitLogAnnotationEntitiesOnly() {
-		return entityFactory(AnnotationCommitLogEntityFactory.class);
-	}
-
-	/**
-	 * Installs a custom factory for {@link CommitLogEntity} objects that
-	 * allows implementors to use their own annotations, etc.
-	 */
-	public CommitLogModuleBuilder entityFactory(Class<? extends CommitLogEntityFactory> entityFactoryType) {
-		this.entityFactoryType = entityFactoryType;
-		return this;
-	}
-
-	/**
-	 * Creates a DI module that would install {@link CommitLogFilter} and its
-	 * listeners in Cayenne.
-	 */
-	public Module build() {
-		return new Module() {
-
-			@SuppressWarnings({ "unchecked" })
-			@Override
-			public void configure(Binder binder) {
-
-				if (listenerTypes.isEmpty() && listenerInstances.isEmpty()) {
-					LOGGER.info("No listeners configured. Skipping CommitLogFilter registration");
-					return;
-				}
-
-				binder.bind(CommitLogEntityFactory.class).to(entityFactoryType);
-
-				ListBuilder<CommitLogListener> listeners = CommitLogModule.contributeListeners(binder)
-						.addAll(listenerInstances);
-
-				// types have to be added one-by-one
-				for (Class<? extends CommitLogListener> type : listenerTypes) {
-					// TODO: temp hack - need to bind each type before adding to collection...
-					binder.bind(type).to((Class)type);
-					listeners.add(type);
-				}
-
-				if (excludeFromTransaction) {
-					ServerModule.contributeDomainFilters(binder).addAfter(CommitLogFilter.class, TransactionFilter.class);
-				} else {
-					ServerModule.contributeDomainFilters(binder).insertBefore(CommitLogFilter.class, TransactionFilter.class);
-				}
-			}
-		};
-	}
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleExtender.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleExtender.java b/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleExtender.java
new file mode 100644
index 0000000..e0ae1da
--- /dev/null
+++ b/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleExtender.java
@@ -0,0 +1,132 @@
+/*****************************************************************
+ *   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.apache.cayenne.commitlog;
+
+import org.apache.cayenne.configuration.server.ServerModule;
+import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.ListBuilder;
+import org.apache.cayenne.di.Module;
+import org.apache.cayenne.commitlog.meta.AnnotationCommitLogEntityFactory;
+import org.apache.cayenne.commitlog.meta.IncludeAllCommitLogEntityFactory;
+import org.apache.cayenne.commitlog.meta.CommitLogEntity;
+import org.apache.cayenne.commitlog.meta.CommitLogEntityFactory;
+import org.apache.cayenne.tx.TransactionFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+/**
+ * A builder of a custom extensions module for {@link CommitLogModule} that customizes its services and installs
+ * application-specific commit log listeners.
+ *
+ * @since 4.0
+ */
+public class CommitLogModuleExtender {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(CommitLogModuleExtender.class);
+
+    private Class<? extends CommitLogEntityFactory> entityFactoryType;
+    private Collection<Class<? extends CommitLogListener>> listenerTypes;
+    private Collection<CommitLogListener> listenerInstances;
+    private boolean excludeFromTransaction;
+
+    CommitLogModuleExtender() {
+        entityFactory(IncludeAllCommitLogEntityFactory.class);
+        this.listenerTypes = new HashSet<>();
+        this.listenerInstances = new HashSet<>();
+    }
+
+    public CommitLogModuleExtender addListener(Class<? extends CommitLogListener> type) {
+        this.listenerTypes.add(type);
+        return this;
+    }
+
+    public CommitLogModuleExtender addListener(CommitLogListener instance) {
+        this.listenerInstances.add(instance);
+        return this;
+    }
+
+    /**
+     * If called, events will be dispatched outside of the main commit
+     * transaction. By default events are dispatched within the transaction, so
+     * listeners can commit their code together with the main commit.
+     */
+    public CommitLogModuleExtender excludeFromTransaction() {
+        this.excludeFromTransaction = true;
+        return this;
+    }
+
+    /**
+     * Installs entity filter that would only include entities annotated with
+     * {@link CommitLog} on the callbacks. Also {@link CommitLog#confidential()}
+     * properties will be obfuscated and {@link CommitLog#ignoredProperties()} -
+     * excluded from the change collection.
+     */
+    public CommitLogModuleExtender commitLogAnnotationEntitiesOnly() {
+        return entityFactory(AnnotationCommitLogEntityFactory.class);
+    }
+
+    /**
+     * Installs a custom factory for {@link CommitLogEntity} objects that
+     * allows implementors to use their own annotations, etc.
+     */
+    public CommitLogModuleExtender entityFactory(Class<? extends CommitLogEntityFactory> entityFactoryType) {
+        this.entityFactoryType = entityFactoryType;
+        return this;
+    }
+
+    /**
+     * Creates a DI module that would install {@link CommitLogFilter} and its
+     * listeners in Cayenne.
+     */
+    public Module build() {
+        return new Module() {
+
+            @SuppressWarnings({"unchecked"})
+            @Override
+            public void configure(Binder binder) {
+
+                if (listenerTypes.isEmpty() && listenerInstances.isEmpty()) {
+                    LOGGER.info("No listeners configured. Skipping CommitLogFilter registration");
+                    return;
+                }
+
+                binder.bind(CommitLogEntityFactory.class).to(entityFactoryType);
+
+                ListBuilder<CommitLogListener> listeners = CommitLogModule.contributeListeners(binder)
+                        .addAll(listenerInstances);
+
+                // types have to be added one-by-one
+                for (Class<? extends CommitLogListener> type : listenerTypes) {
+                    // TODO: temp hack - need to bind each type before adding to collection...
+                    binder.bind(type).to((Class) type);
+                    listeners.add(type);
+                }
+
+                if (excludeFromTransaction) {
+                    ServerModule.contributeDomainFilters(binder).addAfter(CommitLogFilter.class, TransactionFilter.class);
+                } else {
+                    ServerModule.contributeDomainFilters(binder).insertBefore(CommitLogFilter.class, TransactionFilter.class);
+                }
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_AllIT.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_AllIT.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_AllIT.java
index 06f4646..de33318 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_AllIT.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_AllIT.java
@@ -18,37 +18,30 @@
  ****************************************************************/
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import java.sql.SQLException;
-
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
+import org.apache.cayenne.commitlog.db.Auditable1;
+import org.apache.cayenne.commitlog.db.AuditableChild1;
 import org.apache.cayenne.commitlog.model.AttributeChange;
 import org.apache.cayenne.commitlog.model.ChangeMap;
 import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.model.ObjectChangeType;
 import org.apache.cayenne.commitlog.model.ToManyRelationshipChange;
 import org.apache.cayenne.commitlog.model.ToOneRelationshipChange;
-import org.apache.cayenne.commitlog.db.Auditable1;
-import org.apache.cayenne.commitlog.db.AuditableChild1;
 import org.apache.cayenne.commitlog.unit.AuditableServerCase;
+import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
 import org.apache.cayenne.query.SelectById;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
+import java.sql.SQLException;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
 public class CommitLogFilter_AllIT extends AuditableServerCase {
 
 	protected ObjectContext context;
@@ -57,7 +50,7 @@ public class CommitLogFilter_AllIT extends AuditableServerCase {
 	@Override
 	protected ServerRuntimeBuilder configureCayenne() {
 		this.mockListener = mock(CommitLogListener.class);
-		return super.configureCayenne().addModule(CommitLogModuleBuilder.builder().listener(mockListener).build());
+		return super.configureCayenne().addModule(CommitLogModule.extend().addListener(mockListener).build());
 	}
 
 	@Before

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_All_FlattenedIT.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_All_FlattenedIT.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_All_FlattenedIT.java
index ffdcc20..e176360 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_All_FlattenedIT.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_All_FlattenedIT.java
@@ -18,33 +18,28 @@
  ****************************************************************/
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import java.sql.SQLException;
-
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
+import org.apache.cayenne.commitlog.db.E3;
+import org.apache.cayenne.commitlog.db.E4;
 import org.apache.cayenne.commitlog.model.ChangeMap;
 import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.model.ObjectChangeType;
 import org.apache.cayenne.commitlog.model.ToManyRelationshipChange;
-import org.apache.cayenne.commitlog.db.E3;
-import org.apache.cayenne.commitlog.db.E4;
 import org.apache.cayenne.commitlog.unit.FlattenedServerCase;
+import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
 import org.apache.cayenne.query.SelectById;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
+import java.sql.SQLException;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
 public class CommitLogFilter_All_FlattenedIT extends FlattenedServerCase {
 
 	protected ObjectContext context;
@@ -53,7 +48,7 @@ public class CommitLogFilter_All_FlattenedIT extends FlattenedServerCase {
 	@Override
 	protected ServerRuntimeBuilder configureCayenne() {
 		this.mockListener = mock(CommitLogListener.class);
-		return super.configureCayenne().addModule(CommitLogModuleBuilder.builder().listener(mockListener).build());
+		return super.configureCayenne().addModule(CommitLogModule.extend().addListener(mockListener).build());
 	}
 
 	@Before

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_FilteredIT.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_FilteredIT.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_FilteredIT.java
index 7ab42e4..2750122 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_FilteredIT.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_FilteredIT.java
@@ -18,38 +18,32 @@
  ****************************************************************/
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import java.sql.SQLException;
-
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
-import org.apache.cayenne.commitlog.model.AttributeChange;
-import org.apache.cayenne.commitlog.model.ChangeMap;
-import org.apache.cayenne.commitlog.model.ObjectChange;
-import org.apache.cayenne.commitlog.model.ObjectChangeType;
-import org.apache.cayenne.commitlog.model.ToManyRelationshipChange;
 import org.apache.cayenne.commitlog.db.Auditable1;
 import org.apache.cayenne.commitlog.db.Auditable2;
 import org.apache.cayenne.commitlog.db.Auditable3;
 import org.apache.cayenne.commitlog.db.Auditable4;
 import org.apache.cayenne.commitlog.db.AuditableChild1;
+import org.apache.cayenne.commitlog.model.AttributeChange;
+import org.apache.cayenne.commitlog.model.ChangeMap;
+import org.apache.cayenne.commitlog.model.ObjectChange;
+import org.apache.cayenne.commitlog.model.ObjectChangeType;
+import org.apache.cayenne.commitlog.model.ToManyRelationshipChange;
 import org.apache.cayenne.commitlog.unit.AuditableServerCase;
+import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
 import org.apache.cayenne.query.SelectById;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
+import java.sql.SQLException;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
 public class CommitLogFilter_FilteredIT extends AuditableServerCase {
 
 	protected ObjectContext context;
@@ -59,7 +53,7 @@ public class CommitLogFilter_FilteredIT extends AuditableServerCase {
 	protected ServerRuntimeBuilder configureCayenne() {
 		this.mockListener = mock(CommitLogListener.class);
 		return super.configureCayenne().addModule(
-				CommitLogModuleBuilder.builder().commitLogAnnotationEntitiesOnly().listener(mockListener).build());
+				CommitLogModule.extend().commitLogAnnotationEntitiesOnly().addListener(mockListener).build());
 	}
 
 	@Before

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_ListenerInducedChangesIT.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_ListenerInducedChangesIT.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_ListenerInducedChangesIT.java
index 7bff75d..d84105e 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_ListenerInducedChangesIT.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_ListenerInducedChangesIT.java
@@ -19,37 +19,33 @@
 
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.annotation.PrePersist;
 import org.apache.cayenne.annotation.PreUpdate;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
+import org.apache.cayenne.commitlog.db.Auditable1;
+import org.apache.cayenne.commitlog.db.AuditableChild1;
 import org.apache.cayenne.commitlog.model.AttributeChange;
 import org.apache.cayenne.commitlog.model.ChangeMap;
 import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.model.ObjectChangeType;
-import org.apache.cayenne.commitlog.db.Auditable1;
-import org.apache.cayenne.commitlog.db.AuditableChild1;
 import org.apache.cayenne.commitlog.unit.AuditableServerCase;
+import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
 import org.apache.cayenne.query.SelectById;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
 /**
  * Testing capturing changes introduced by the pre-commit listeners.
  */
@@ -61,7 +57,7 @@ public class CommitLogFilter_ListenerInducedChangesIT extends AuditableServerCas
 	@Override
 	protected ServerRuntimeBuilder configureCayenne() {
 		this.mockListener = mock(CommitLogListener.class);
-		return super.configureCayenne().addModule(CommitLogModuleBuilder.builder().listener(mockListener).build());
+		return super.configureCayenne().addModule(CommitLogModule.extend().addListener(mockListener).build());
 	}
 
 	@Before

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_OutsideTxIT.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_OutsideTxIT.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_OutsideTxIT.java
index 95c5c29..e45a493 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_OutsideTxIT.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_OutsideTxIT.java
@@ -18,23 +18,23 @@
  ****************************************************************/
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.sql.SQLException;
-import java.util.List;
-
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
-import org.apache.cayenne.commitlog.model.ChangeMap;
-import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.db.AuditLog;
 import org.apache.cayenne.commitlog.db.Auditable2;
+import org.apache.cayenne.commitlog.model.ChangeMap;
+import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.unit.AuditableServerCase;
+import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
 import org.apache.cayenne.tx.BaseTransaction;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.sql.SQLException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
 public class CommitLogFilter_OutsideTxIT extends AuditableServerCase {
 
 	protected ObjectContext context;
@@ -58,7 +58,7 @@ public class CommitLogFilter_OutsideTxIT extends AuditableServerCase {
 			}
 		};
 		return super.configureCayenne().addModule(
-				CommitLogModuleBuilder.builder().commitLogAnnotationEntitiesOnly().excludeFromTransaction().listener(listener)
+				CommitLogModule.extend().commitLogAnnotationEntitiesOnly().excludeFromTransaction().addListener(listener)
 						.build());
 	}
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_TxIT.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_TxIT.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_TxIT.java
index 9662cc4..6e5782e 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_TxIT.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogFilter_TxIT.java
@@ -18,23 +18,23 @@
  ****************************************************************/
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.sql.SQLException;
-import java.util.List;
-
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
-import org.apache.cayenne.commitlog.model.ChangeMap;
-import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.db.AuditLog;
 import org.apache.cayenne.commitlog.db.Auditable2;
+import org.apache.cayenne.commitlog.model.ChangeMap;
+import org.apache.cayenne.commitlog.model.ObjectChange;
 import org.apache.cayenne.commitlog.unit.AuditableServerCase;
+import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
 import org.apache.cayenne.tx.BaseTransaction;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.sql.SQLException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
 public class CommitLogFilter_TxIT extends AuditableServerCase {
 
 	protected ObjectContext context;
@@ -58,7 +58,7 @@ public class CommitLogFilter_TxIT extends AuditableServerCase {
 			}
 		};
 		return super.configureCayenne().addModule(
-				CommitLogModuleBuilder.builder().commitLogAnnotationEntitiesOnly().listener(listener).build());
+				CommitLogModule.extend().commitLogAnnotationEntitiesOnly().addListener(listener).build());
 	}
 
 	@Before

http://git-wip-us.apache.org/repos/asf/cayenne/blob/175ec07f/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogModuleBuilderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogModuleBuilderTest.java b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogModuleBuilderTest.java
index 9513c92..d6b0355 100644
--- a/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogModuleBuilderTest.java
+++ b/cayenne-commitlog/src/test/java/org/apache/cayenne/commitlog/CommitLogModuleBuilderTest.java
@@ -18,26 +18,26 @@
  ****************************************************************/
 package org.apache.cayenne.commitlog;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
 import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.commitlog.model.ChangeMap;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
-import org.apache.cayenne.commitlog.model.ChangeMap;
 import org.junit.Test;
 
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 public class CommitLogModuleBuilderTest {
 
 	@Test
 	public void testListener_Object() {
 
 		L listener = new L();
-		Module m = CommitLogModuleBuilder.builder().listener(listener).build();
+		Module m = CommitLogModule.extend().addListener(listener).build();
 
 		Injector i = DIBootstrap.createInjector(m);
 		List<CommitLogListener> listeners = i.getInstance(Key.getListOf(CommitLogListener.class));
@@ -48,7 +48,7 @@ public class CommitLogModuleBuilderTest {
 	@Test
 	public void testListener_Class() {
 
-		Module m = CommitLogModuleBuilder.builder().listener(L.class).build();
+		Module m = CommitLogModule.extend().addListener(L.class).build();
 
 		Injector i = DIBootstrap.createInjector(m);
 		List<CommitLogListener> listeners = i.getInstance(Key.getListOf(CommitLogListener.class));