Java 8  - lambdas for Module anonymous inner classes

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

Branch: refs/heads/master
Commit: 3fc0943160e2e238e688719397b259be393854f3
Parents: 588c237
Author: Andrus Adamchik <and...@objectstyle.com>
Authored: Sat Sep 23 19:00:06 2017 +0300
Committer: Andrus Adamchik <and...@objectstyle.com>
Committed: Sat Sep 23 22:47:44 2017 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/tools/DataPortTask.java  |  14 +-
 .../CacheInvalidationCacheGroupsHandlerIT.java  |  17 +-
 .../invalidation/CacheInvalidationCase.java     |   7 +-
 .../rop/client/ClientLocalRuntime.java          |  12 +-
 .../rop/client/ClientRuntimeBuilder.java        |  31 +-
 .../rop/client/ClientLocalRuntimeTest.java      |  34 +-
 .../rop/client/ClientRuntimeTest.java           |  38 +-
 .../unit/di/client/ClientRuntimeProvider.java   |  16 +-
 .../commitlog/CommitLogModuleExtender.java      |  60 ++-
 .../cayenne/crypto/CryptoModuleExtender.java    | 113 +++--
 .../cayenne/crypto/Runtime_LazyInit_IT.java     |  16 +-
 .../dbimport/ManyToManyCandidateEntityTest.java |  24 +-
 .../org/apache/cayenne/di/DIBootstrapTest.java  |  18 +-
 .../di/spi/DefaultInjectorBindingTest.java      |  54 +--
 .../DefaultInjectorCircularInjectionTest.java   |  49 +-
 .../di/spi/DefaultInjectorDecorationTest.java   |  55 +--
 .../di/spi/DefaultInjectorInjectionTest.java    | 471 ++++++++-----------
 .../di/spi/DefaultInjectorScopeTest.java        |  71 +--
 .../cayenne/di/spi/DefaultInjectorTest.java     |  37 +-
 .../apache/cayenne/jcache/unit/JCacheCase.java  |   9 +-
 .../project/DataChannelProjectLoaderTest.java   |  27 +-
 .../project/DataChannelProjectSaverTest.java    |  55 +--
 .../cayenne/project/FileProjectSaverTest.java   |  12 +-
 .../configuration/server/ServerRuntime.java     |  12 +-
 .../server/ServerRuntimeBuilder.java            |  92 ++--
 .../org/apache/cayenne/BaseContextTest.java     |  17 +-
 .../access/DefaultDataRowStoreFactoryIT.java    |  49 +-
 .../server/DataContextFactoryTest.java          |  75 ++-
 .../server/DataDomainProviderTest.java          | 350 +++++++-------
 .../DefaultDataSourceFactoryLoaderTest.java     |  45 +-
 .../server/DefaultDbAdapterFactoryTest.java     | 107 ++---
 .../configuration/server/ServerRuntimeTest.java |  36 +-
 .../web/ServletContextHandlerTest.java          |  31 +-
 .../configuration/web/WebConfigurationTest.java |  36 +-
 .../xml/XMLDataChannelDescriptorLoaderTest.java |  22 +-
 .../configuration/xml/XMLDataMapLoaderTest.java |  24 +-
 .../apache/cayenne/unit/di/DICaseSelfIT.java    |  32 +-
 .../event/JavaGroupsBridgeProviderTest.java     |  10 +-
 .../cayenne/event/JMSBridgeProviderTest.java    |   9 +-
 .../cayenne/event/XMPPBridgeProviderTest.java   |  14 +-
 40 files changed, 852 insertions(+), 1349 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-ant/src/main/java/org/apache/cayenne/tools/DataPortTask.java
----------------------------------------------------------------------
diff --git 
a/cayenne-ant/src/main/java/org/apache/cayenne/tools/DataPortTask.java 
b/cayenne-ant/src/main/java/org/apache/cayenne/tools/DataPortTask.java
index 4b24035..eade13c 100644
--- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/DataPortTask.java
+++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/DataPortTask.java
@@ -24,7 +24,6 @@ import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.DataPort;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.map.DataMap;
@@ -72,14 +71,11 @@ public class DataPortTask extends CayenneTask {
         validateParameters();
 
         String projectFileLocation = projectFile.getName();
-        Module dataPortModule = new Module() {
-
-            public void configure(Binder binder) {
-                FilesystemResourceLocator filesystemResourceLocator = new 
FilesystemResourceLocator(projectFile);
-                
binder.bind(ResourceLocator.class).toInstance(filesystemResourceLocator);
-                binder.bind(Key.get(ResourceLocator.class, 
Constants.SERVER_RESOURCE_LOCATOR))
-                        .toInstance(filesystemResourceLocator);
-            }
+        Module dataPortModule = binder -> {
+            FilesystemResourceLocator filesystemResourceLocator = new 
FilesystemResourceLocator(projectFile);
+            
binder.bind(ResourceLocator.class).toInstance(filesystemResourceLocator);
+            binder.bind(Key.get(ResourceLocator.class, 
Constants.SERVER_RESOURCE_LOCATOR))
+                    .toInstance(filesystemResourceLocator);
         };
 
         ServerRuntime runtime = new ServerRuntime(projectFileLocation,

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCacheGroupsHandlerIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCacheGroupsHandlerIT.java
 
b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCacheGroupsHandlerIT.java
index d5aa1bd..5a26d49 100644
--- 
a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCacheGroupsHandlerIT.java
+++ 
b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCacheGroupsHandlerIT.java
@@ -22,10 +22,9 @@ package org.apache.cayenne.cache.invalidation;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.cache.QueryCache;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.Module;
 import org.apache.cayenne.cache.invalidation.db.E1;
 import org.apache.cayenne.cache.invalidation.db.E2;
+import org.apache.cayenne.di.Module;
 import org.apache.cayenne.query.ObjectSelect;
 import org.junit.Before;
 import org.junit.Test;
@@ -50,11 +49,8 @@ public class CacheInvalidationCacheGroupsHandlerIT extends 
CacheInvalidationCase
 
     @Override
     protected Module extendInvalidationModule() {
-        return new Module() {
-            @Override
-            public void configure(Binder binder) {
-                // do nothing module
-            }
+        return binder -> {
+            // do nothing module
         };
     }
 
@@ -75,12 +71,7 @@ public class CacheInvalidationCacheGroupsHandlerIT extends 
CacheInvalidationCase
             }
         };
 
-        return new Module() {
-            @Override
-            public void configure(Binder binder) {
-                binder.bind(QueryCache.class).toInstance(cache);
-            }
-        };
+        return binder -> binder.bind(QueryCache.class).toInstance(cache);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCase.java
----------------------------------------------------------------------
diff --git 
a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCase.java
 
b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCase.java
index 6c3ed1d..86b3f44 100644
--- 
a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCase.java
+++ 
b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCase.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.cache.invalidation;
 
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.configuration.server.ServerRuntimeBuilder;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -51,11 +50,7 @@ public abstract class CacheInvalidationCase {
        protected abstract Module extendInvalidationModule();
 
        protected Module buildCustomModule() {
-               return new Module() {
-                       @Override
-                       public void configure(Binder binder) {
-                       }
-               };
+               return binder -> { };
        }
 
        protected ServerRuntimeBuilder configureCayenne() {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntime.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntime.java
 
b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntime.java
index 27cf9b6..3f089d1 100644
--- 
a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntime.java
+++ 
b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntime.java
@@ -19,7 +19,6 @@
 package org.apache.cayenne.configuration.rop.client;
 
 import org.apache.cayenne.DataChannel;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
@@ -58,13 +57,10 @@ public class ClientLocalRuntime extends ClientRuntime {
     private static Collection<Module> collectModules(final Injector 
serverInjector, Collection<Module> extraModules) {
 
         Collection<Module> modules = new ArrayList<>(extraModules.size() + 1);
-        modules.add(new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(Key.get(DataChannel.class, 
ClientRuntime.CLIENT_SERVER_CHANNEL_KEY)).toProviderInstance(
-                        new LocalClientServerChannelProvider(serverInjector));
-                binder.bind(ClientConnection.class).toProviderInstance(new 
LocalConnectionProvider());
-            }
+        modules.add(binder -> {
+            binder.bind(Key.get(DataChannel.class, 
ClientRuntime.CLIENT_SERVER_CHANNEL_KEY)).toProviderInstance(
+                    new LocalClientServerChannelProvider(serverInjector));
+            binder.bind(ClientConnection.class).toProviderInstance(new 
LocalConnectionProvider());
         });
 
         modules.addAll(extraModules);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilder.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilder.java
 
b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilder.java
index d8c2aef..def7070 100644
--- 
a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilder.java
+++ 
b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilder.java
@@ -19,21 +19,20 @@
 
 package org.apache.cayenne.configuration.rop.client;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.spi.ModuleLoader;
 import org.apache.cayenne.remote.ClientConnection;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
 
 /**
  * <p>
@@ -132,22 +131,14 @@ public class ClientRuntimeBuilder {
         Collection<Module> modules = new ArrayList<>();
 
         if(properties != null) {
-            modules.add(new Module() {
-                @Override
-                public void configure(Binder binder) {
-                    
ServerModule.contributeProperties(binder).putAll(properties);
-                }
-            });
+            modules.add(binder -> 
ServerModule.contributeProperties(binder).putAll(properties));
         }
 
         if(local) {
-            modules.add(new Module() {
-                @Override
-                public void configure(Binder binder) {
-                    binder.bind(Key.get(DataChannel.class, 
ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
-                            .toProviderInstance(new 
LocalClientServerChannelProvider(serverInjector));
-                    binder.bind(ClientConnection.class).toProviderInstance(new 
LocalConnectionProvider());
-                }
+            modules.add(binder -> {
+                binder.bind(Key.get(DataChannel.class, 
ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
+                        .toProviderInstance(new 
LocalClientServerChannelProvider(serverInjector));
+                binder.bind(ClientConnection.class).toProviderInstance(new 
LocalConnectionProvider());
             });
         }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntimeTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntimeTest.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntimeTest.java
index 1e9dbe6..cee95b2 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntimeTest.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientLocalRuntimeTest.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.ClientServerChannel;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.configuration.ObjectContextFactory;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.remote.ClientConnection;
@@ -32,10 +31,7 @@ import org.junit.Test;
 
 import java.util.Collection;
 
-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.junit.Assert.*;
 import static org.mockito.Mockito.mock;
 
 public class ClientLocalRuntimeTest {
@@ -43,11 +39,8 @@ public class ClientLocalRuntimeTest {
     @Test
        public void testDefaultConstructor() {
 
-               Module serverModule = new Module() {
-
-                       public void configure(Binder binder) {
-                       }
-               };
+               Module serverModule = binder -> {
+        };
 
                ClientRuntime runtime = ClientRuntime.builder()
                                .disableModulesAutoLoading()
@@ -64,21 +57,16 @@ public class ClientLocalRuntimeTest {
 
                final DataContext serverContext = mock(DataContext.class);
 
-               Module serverModule = new Module() {
-
-                       public void configure(Binder binder) {
-                               
binder.bind(ObjectContextFactory.class).toInstance(new ObjectContextFactory() {
+               Module serverModule = binder -> 
binder.bind(ObjectContextFactory.class).toInstance(new ObjectContextFactory() {
 
-                                       public ObjectContext 
createContext(DataChannel parent) {
-                                               return null;
-                                       }
+            public ObjectContext createContext(DataChannel parent) {
+                return null;
+            }
 
-                                       public ObjectContext createContext() {
-                                               return serverContext;
-                                       }
-                               });
-                       }
-               };
+            public ObjectContext createContext() {
+                return serverContext;
+            }
+        });
 
                ClientRuntime runtime = ClientRuntime.builder()
                                .local(DIBootstrap.createInjector(serverModule))

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
index 30f3c8a..d33f6c8 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
@@ -62,19 +62,9 @@ public class ClientRuntimeTest {
 
                final boolean[] configured = new boolean[2];
 
-               Module m1 = new Module() {
+               Module m1 = binder -> configured[0] = true;
 
-                       public void configure(Binder binder) {
-                               configured[0] = true;
-                       }
-               };
-
-               Module m2 = new Module() {
-
-                       public void configure(Binder binder) {
-                               configured[1] = true;
-                       }
-               };
+               Module m2 = binder -> configured[1] = true;
 
                Map<String, String> properties = new HashMap<>();
 
@@ -93,19 +83,9 @@ public class ClientRuntimeTest {
 
                Collection<Module> modules = new ArrayList<Module>();
 
-               modules.add(new Module() {
+               modules.add(binder -> configured[0] = true);
 
-                       public void configure(Binder binder) {
-                               configured[0] = true;
-                       }
-               });
-
-               modules.add(new Module() {
-
-                       public void configure(Binder binder) {
-                               configured[1] = true;
-                       }
-               });
+               modules.add(binder -> configured[1] = true);
 
                Map<String, String> properties = new HashMap<>();
 
@@ -149,14 +129,10 @@ public class ClientRuntimeTest {
 
                Map<String, String> properties = new HashMap<>();
 
-               Module extraModule = new Module() {
+               Module extraModule = binder ->
+            // use a noop connection to prevent hessian startup errors...
+            binder.bind(ClientConnection.class).to(MockClientConnection.class);
 
-                       public void configure(Binder binder) {
-
-                               // use a noop connection to prevent hessian 
startup errors...
-                               
binder.bind(ClientConnection.class).to(MockClientConnection.class);
-                       }
-               };
 
                ClientRuntime runtime = new ClientRuntime(properties, 
extraModule);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
index ed74f4c..3c1ff8c 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
@@ -23,10 +23,8 @@ import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.configuration.rop.client.ClientRuntime;
 import org.apache.cayenne.configuration.rop.client.LocalConnectionProvider;
 import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Key;
-import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.remote.ClientConnection;
 
@@ -42,14 +40,12 @@ public class ClientRuntimeProvider implements 
Provider<ClientRuntime> {
     public ClientRuntime get() throws ConfigurationException {
         return ClientRuntime.builder()
                 .properties(clientCaseProperties.getRuntimeProperties())
-                .addModule(new Module() {
-                    public void configure(Binder binder) {
-                        // add an interceptor between client and server parts 
to capture and inspect the traffic
-                        binder.bind(Key.get(DataChannel.class, 
ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
-                                .toProviderInstance(new 
InterceptingClientServerChannelProvider(serverRuntimeProvider.get().getInjector()));
-                        // create local connection
-                        
binder.bind(ClientConnection.class).toProviderInstance(new 
LocalConnectionProvider());
-                    }
+                .addModule(binder -> {
+                    // add an interceptor between client and server parts to 
capture and inspect the traffic
+                    binder.bind(Key.get(DataChannel.class, 
ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
+                            .toProviderInstance(new 
InterceptingClientServerChannelProvider(serverRuntimeProvider.get().getInjector()));
+                    // create local connection
+                    binder.bind(ClientConnection.class).toProviderInstance(new 
LocalConnectionProvider());
                 })
                 .build();
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/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
index 9208880..9794016 100644
--- 
a/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleExtender.java
+++ 
b/cayenne-commitlog/src/main/java/org/apache/cayenne/commitlog/CommitLogModuleExtender.java
@@ -18,14 +18,13 @@
  ****************************************************************/
 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.commitlog.meta.IncludeAllCommitLogEntityFactory;
+import org.apache.cayenne.configuration.server.ServerModule;
+import org.apache.cayenne.di.ListBuilder;
+import org.apache.cayenne.di.Module;
 import org.apache.cayenne.tx.TransactionFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -98,34 +97,29 @@ public class CommitLogModuleExtender {
      * listeners in Cayenne.
      */
     public Module module() {
-        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);
-                }
+        return 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/3fc09431/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
----------------------------------------------------------------------
diff --git 
a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
 
b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
index 98bef8c..f432dbd 100644
--- 
a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
+++ 
b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleExtender.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.crypto.map.PatternColumnMapper;
 import org.apache.cayenne.crypto.transformer.bytes.BytesTransformerFactory;
 import org.apache.cayenne.crypto.transformer.value.BytesConverter;
 import org.apache.cayenne.crypto.transformer.value.ValueTransformerFactory;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.MapBuilder;
 import org.apache.cayenne.di.Module;
 
@@ -227,81 +226,77 @@ public class CryptoModuleExtender {
      */
     public Module module() {
 
-        return new Module() {
+        return binder -> {
 
-            @Override
-            public void configure(Binder binder) {
+            MapBuilder<String> props = 
CryptoModule.contributeProperties(binder);
 
-                MapBuilder<String> props = 
CryptoModule.contributeProperties(binder);
-
-                if (cipherAlgoritm != null) {
-                    props.put(CryptoConstants.CIPHER_ALGORITHM, 
cipherAlgoritm);
-                }
+            if (cipherAlgoritm != null) {
+                props.put(CryptoConstants.CIPHER_ALGORITHM, cipherAlgoritm);
+            }
 
-                if (cipherMode != null) {
-                    props.put(CryptoConstants.CIPHER_MODE, cipherMode);
-                }
+            if (cipherMode != null) {
+                props.put(CryptoConstants.CIPHER_MODE, cipherMode);
+            }
 
-                String keyStoreUrl = keyStoreUrl();
-                if (keyStoreUrl != null) {
-                    props.put(CryptoConstants.KEYSTORE_URL, keyStoreUrl);
-                }
+            String keyStoreUrl = keyStoreUrl();
+            if (keyStoreUrl != null) {
+                props.put(CryptoConstants.KEYSTORE_URL, keyStoreUrl);
+            }
 
-                if (encryptionKeyAlias != null) {
-                    props.put(CryptoConstants.ENCRYPTION_KEY_ALIAS, 
encryptionKeyAlias);
-                }
+            if (encryptionKeyAlias != null) {
+                props.put(CryptoConstants.ENCRYPTION_KEY_ALIAS, 
encryptionKeyAlias);
+            }
 
-                if (compress) {
-                    props.put(CryptoConstants.COMPRESSION, "true");
-                }
+            if (compress) {
+                props.put(CryptoConstants.COMPRESSION, "true");
+            }
 
-                if (useHMAC) {
-                    props.put(CryptoConstants.USE_HMAC, "true");
-                }
+            if (useHMAC) {
+                props.put(CryptoConstants.USE_HMAC, "true");
+            }
 
-                if (keyPassword != null) {
-                    
CryptoModule.contributeCredentials(binder).put(CryptoConstants.KEY_PASSWORD, 
keyPassword);
-                }
+            if (keyPassword != null) {
+                
CryptoModule.contributeCredentials(binder).put(CryptoConstants.KEY_PASSWORD, 
keyPassword);
+            }
 
-                if (cipherFactoryType != null) {
-                    binder.bind(CipherFactory.class).to(cipherFactoryType);
-                }
+            if (cipherFactoryType != null) {
+                binder.bind(CipherFactory.class).to(cipherFactoryType);
+            }
 
-                if (valueTransformerFactoryType != null) {
-                    
binder.bind(ValueTransformerFactory.class).to(valueTransformerFactoryType);
-                }
+            if (valueTransformerFactoryType != null) {
+                
binder.bind(ValueTransformerFactory.class).to(valueTransformerFactoryType);
+            }
 
-                if (!extraDbToBytes.isEmpty()) {
-                    MapBuilder<BytesConverter<?>> dbToBytesBinder = 
CryptoModule.contributeDbToByteConverters(binder);
-                    for (Map.Entry<Integer, BytesConverter<?>> extraConverter 
: extraDbToBytes.entrySet()) {
-                        
dbToBytesBinder.put(extraConverter.getKey().toString(), 
extraConverter.getValue());
-                    }
+            if (!extraDbToBytes.isEmpty()) {
+                MapBuilder<BytesConverter<?>> dbToBytesBinder = 
CryptoModule.contributeDbToByteConverters(binder);
+                for (Map.Entry<Integer, BytesConverter<?>> extraConverter : 
extraDbToBytes.entrySet()) {
+                    dbToBytesBinder.put(extraConverter.getKey().toString(), 
extraConverter.getValue());
                 }
+            }
 
-                if (!extraObjectToBytes.isEmpty()) {
-                    MapBuilder<BytesConverter<?>> objectToBytesBinder = 
CryptoModule.contributeObjectToByteConverters(binder);
-                    for (Map.Entry<String, BytesConverter<?>> extraConverter : 
extraObjectToBytes.entrySet()) {
-                        objectToBytesBinder.put(extraConverter.getKey(), 
extraConverter.getValue());
-                    }
+            if (!extraObjectToBytes.isEmpty()) {
+                MapBuilder<BytesConverter<?>> objectToBytesBinder = 
CryptoModule.contributeObjectToByteConverters(binder);
+                for (Map.Entry<String, BytesConverter<?>> extraConverter : 
extraObjectToBytes.entrySet()) {
+                    objectToBytesBinder.put(extraConverter.getKey(), 
extraConverter.getValue());
                 }
+            }
 
-                if (bytesTransformerFactoryType != null) {
-                    
binder.bind(BytesTransformerFactory.class).to(bytesTransformerFactoryType);
-                }
+            if (bytesTransformerFactoryType != null) {
+                
binder.bind(BytesTransformerFactory.class).to(bytesTransformerFactoryType);
+            }
 
-                if (keySource != null) {
-                    binder.bind(KeySource.class).toInstance(keySource);
-                } else if (keySourceType != null) {
-                    binder.bind(KeySource.class).to(keySourceType);
-                }
+            if (keySource != null) {
+                binder.bind(KeySource.class).toInstance(keySource);
+            } else if (keySourceType != null) {
+                binder.bind(KeySource.class).to(keySourceType);
+            }
 
-                if (columnMapperPattern != null) {
-                    binder.bind(ColumnMapper.class).toInstance(new 
PatternColumnMapper(columnMapperPattern));
-                } else if (columnMapperType != null) {
-                    binder.bind(ColumnMapper.class).to(columnMapperType);
-                } else if (columnMapper != null) {
-                    binder.bind(ColumnMapper.class).toInstance(columnMapper);
-                }
+            if (columnMapperPattern != null) {
+                binder.bind(ColumnMapper.class).toInstance(new 
PatternColumnMapper(columnMapperPattern));
+            } else if (columnMapperType != null) {
+                binder.bind(ColumnMapper.class).to(columnMapperType);
+            } else if (columnMapper != null) {
+                binder.bind(ColumnMapper.class).toInstance(columnMapper);
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_LazyInit_IT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_LazyInit_IT.java
 
b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_LazyInit_IT.java
index 988a658..d69d0ff 100644
--- 
a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_LazyInit_IT.java
+++ 
b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/Runtime_LazyInit_IT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.crypto.db.Table1;
 import org.apache.cayenne.crypto.db.Table4;
 import org.apache.cayenne.crypto.key.KeySource;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.query.ObjectSelect;
@@ -32,9 +31,7 @@ import org.junit.Test;
 
 import java.security.Key;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 
 public class Runtime_LazyInit_IT extends Runtime_AES128_Base {
 
@@ -49,14 +46,9 @@ public class Runtime_LazyInit_IT extends Runtime_AES128_Base 
{
 
     @Override
     protected ServerRuntime createRuntime(final Module crypto) {
-        Module cryptoWrapper = new Module() {
-            @Override
-            public void configure(Binder binder) {
-
-                crypto.configure(binder);
-
-                
binder.decorate(KeySource.class).after(LockingKeySourceDecorator.class);
-            }
+        Module cryptoWrapper = binder -> {
+            crypto.configure(binder);
+            
binder.decorate(KeySource.class).after(LockingKeySourceDecorator.class);
         };
 
         return super.createRuntime(cryptoWrapper);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntityTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntityTest.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntityTest.java
index 574ebed..3043f15 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntityTest.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntityTest.java
@@ -34,7 +34,6 @@ import org.apache.cayenne.configuration.xml.XMLReaderProvider;
 import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
 import org.apache.cayenne.dbsync.naming.NoStemStemmer;
 import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.ClassLoaderManager;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
@@ -52,9 +51,7 @@ import org.xml.sax.XMLReader;
 import java.net.URL;
 import java.util.ArrayList;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.*;
 
 public class ManyToManyCandidateEntityTest {
 
@@ -62,17 +59,14 @@ public class ManyToManyCandidateEntityTest {
 
     @Before
     public void setUp() throws Exception {
-        Module testModule = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
-                
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
-                binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
-                
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
-                
binder.bind(HandlerFactory.class).to(DefaultHandlerFactory.class);
-                
binder.bind(DataChannelMetaData.class).to(NoopDataChannelMetaData.class);
-                binder.bind(XMLReader.class).toProviderInstance(new 
XMLReaderProvider(false)).withoutScope();
-            }
+        Module testModule = binder -> {
+            
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
+            
binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
+            binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
+            
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
+            binder.bind(HandlerFactory.class).to(DefaultHandlerFactory.class);
+            
binder.bind(DataChannelMetaData.class).to(NoopDataChannelMetaData.class);
+            binder.bind(XMLReader.class).toProviderInstance(new 
XMLReaderProvider(false)).withoutScope();
         };
 
         Injector injector = DIBootstrap.createInjector(testModule);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-di/src/test/java/org/apache/cayenne/di/DIBootstrapTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-di/src/test/java/org/apache/cayenne/di/DIBootstrapTest.java 
b/cayenne-di/src/test/java/org/apache/cayenne/di/DIBootstrapTest.java
index 9ce33f6..adc19b3 100644
--- a/cayenne-di/src/test/java/org/apache/cayenne/di/DIBootstrapTest.java
+++ b/cayenne-di/src/test/java/org/apache/cayenne/di/DIBootstrapTest.java
@@ -36,11 +36,7 @@ public class DIBootstrapTest {
        public void testCreateInjector_SingleModule() {
                final boolean[] configureCalled = new boolean[1];
 
-               Module module = new Module() {
-                       public void configure(Binder binder) {
-                               configureCalled[0] = true;
-                       }
-               };
+               Module module = binder -> configureCalled[0] = true;
 
                Injector injector = DIBootstrap.createInjector(module);
                assertNotNull(injector);
@@ -53,17 +49,9 @@ public class DIBootstrapTest {
 
                final boolean[] configureCalled = new boolean[2];
 
-               Module module1 = new Module() {
-                       public void configure(Binder binder) {
-                               configureCalled[0] = true;
-                       }
-               };
+               Module module1 = binder -> configureCalled[0] = true;
 
-               Module module2 = new Module() {
-                       public void configure(Binder binder) {
-                               configureCalled[1] = true;
-                       }
-               };
+               Module module2 = binder -> configureCalled[1] = true;
 
                Injector injector = DIBootstrap.createInjector(module1, 
module2);
                assertNotNull(injector);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorBindingTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorBindingTest.java
 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorBindingTest.java
index e8c8712..f99b2e4 100644
--- 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorBindingTest.java
+++ 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorBindingTest.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.di.spi;
 
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.mock.MockImplementation1;
@@ -28,21 +27,14 @@ import org.apache.cayenne.di.mock.MockInterface1;
 import org.apache.cayenne.di.mock.MockInterface1Provider;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
+import static org.junit.Assert.*;
 
 public class DefaultInjectorBindingTest {
 
     @Test
     public void testClassBinding() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-            }
-        };
+        Module module = binder -> 
binder.bind(MockInterface1.class).to(MockImplementation1.class);
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -54,15 +46,12 @@ public class DefaultInjectorBindingTest {
     @Test
     public void testClassNamedBinding() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                binder.bind(Key.get(MockInterface1.class, "abc")).to(
-                        MockImplementation1Alt.class);
-                binder.bind(Key.get(MockInterface1.class, "xyz")).to(
-                        MockImplementation1Alt2.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(Key.get(MockInterface1.class, "abc")).to(
+                    MockImplementation1Alt.class);
+            binder.bind(Key.get(MockInterface1.class, "xyz")).to(
+                    MockImplementation1Alt2.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -86,14 +75,9 @@ public class DefaultInjectorBindingTest {
 
     @Test
     public void testProviderBinding() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder
-                        .bind(MockInterface1.class)
-                        .toProvider(MockInterface1Provider.class);
-            }
-        };
+        Module module = binder -> binder
+                .bind(MockInterface1.class)
+                .toProvider(MockInterface1Provider.class);
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -107,12 +91,7 @@ public class DefaultInjectorBindingTest {
 
         final MockImplementation1 instance = new MockImplementation1();
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).toInstance(instance);
-            }
-        };
+        Module module = binder -> 
binder.bind(MockInterface1.class).toInstance(instance);
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -124,12 +103,9 @@ public class DefaultInjectorBindingTest {
     @Test
     public void testClassReBinding() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.bind(MockInterface1.class).to(MockImplementation1Alt.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(MockInterface1.class).to(MockImplementation1Alt.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorCircularInjectionTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorCircularInjectionTest.java
 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorCircularInjectionTest.java
index 05e9156..a3f3061 100644
--- 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorCircularInjectionTest.java
+++ 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorCircularInjectionTest.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.di.spi;
 
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIRuntimeException;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.mock.MockImplementation1_DepOn2;
@@ -41,12 +40,9 @@ public class DefaultInjectorCircularInjectionTest {
     @Test
     public void testFieldInjection_CircularDependency() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_DepOn2.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2.class);
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_DepOn2.class);
+            binder.bind(MockInterface2.class).to(MockImplementation2.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -66,13 +62,10 @@ public class DefaultInjectorCircularInjectionTest {
     @Test
     public void testProviderInjection_CircularDependency() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).to(
-                        MockImplementation1_DepOn2Provider.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(
+                    MockImplementation1_DepOn2Provider.class);
+            binder.bind(MockInterface2.class).to(MockImplementation2.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -84,14 +77,11 @@ public class DefaultInjectorCircularInjectionTest {
     @Test
     public void testConstructorInjection_CircularDependency() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).to(
-                        MockImplementation1_DepOn2Constructor.class);
-                binder.bind(MockInterface2.class).to(
-                        MockImplementation2_Constructor.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(
+                    MockImplementation1_DepOn2Constructor.class);
+            binder.bind(MockInterface2.class).to(
+                    MockImplementation2_Constructor.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -111,15 +101,12 @@ public class DefaultInjectorCircularInjectionTest {
     @Test
     public void testConstructorInjection_WithFieldInjectionDeps() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).to(
-                        MockImplementation1_DepOn2Constructor.class);
-                binder.bind(MockInterface2.class).to(
-                        MockImplementation2_I3Dependency.class);
-                
binder.bind(MockInterface3.class).to(MockImplementation3.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(
+                    MockImplementation1_DepOn2Constructor.class);
+            binder.bind(MockInterface2.class).to(
+                    MockImplementation2_I3Dependency.class);
+            binder.bind(MockInterface3.class).to(MockImplementation3.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorDecorationTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorDecorationTest.java
 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorDecorationTest.java
index dfe34ff..5054a77 100644
--- 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorDecorationTest.java
+++ 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorDecorationTest.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.di.spi;
 
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.mock.MockImplementation1;
 import org.apache.cayenne.di.mock.MockInterface1;
@@ -37,13 +36,9 @@ public class DefaultInjectorDecorationTest {
     @Test
     public void testSingleDecorator_After() {
 
-        Module module = new Module() {
-
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.decorate(MockInterface1.class).after(MockInterface1_Decorator1.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.decorate(MockInterface1.class).after(MockInterface1_Decorator1.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -56,13 +51,9 @@ public class DefaultInjectorDecorationTest {
     @Test
     public void testSingleDecorator_Before() {
 
-        Module module = new Module() {
-
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator1.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator1.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -75,16 +66,12 @@ public class DefaultInjectorDecorationTest {
     @Test
     public void testDecoratorChain() {
 
-        Module module = new Module() {
-
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator1.class);
-                
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator2.class);
-                
binder.decorate(MockInterface1.class).after(MockInterface1_Decorator3.class);
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator1.class);
+            
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator2.class);
+            
binder.decorate(MockInterface1.class).after(MockInterface1_Decorator3.class);
 
-            }
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -97,13 +84,9 @@ public class DefaultInjectorDecorationTest {
     @Test
     public void testSingleDecorator_Provider_ConstructorInjection() {
 
-        Module module = new Module() {
-
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator4.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator4.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -116,13 +99,9 @@ public class DefaultInjectorDecorationTest {
     @Test
     public void testSingleDecorator_Provider_FieldInjection() {
 
-        Module module = new Module() {
-
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator5.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.decorate(MockInterface1.class).before(MockInterface1_Decorator5.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
index 8d59d94..a56fcb6 100644
--- 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
+++ 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.di.spi;
 
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIRuntimeException;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
@@ -59,12 +58,9 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testFieldInjection() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(MockInterface2.class).to(MockImplementation2.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -77,14 +73,11 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testFieldInjection_Named() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                binder.bind(Key.get(MockInterface1.class, 
"one")).to(MockImplementation1Alt.class);
-                binder.bind(Key.get(MockInterface1.class, 
"two")).to(MockImplementation1Alt2.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2_Named.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(Key.get(MockInterface1.class, 
"one")).to(MockImplementation1Alt.class);
+            binder.bind(Key.get(MockInterface1.class, 
"two")).to(MockImplementation1Alt2.class);
+            
binder.bind(MockInterface2.class).to(MockImplementation2_Named.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -97,13 +90,10 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testFieldInjectionSuperclass() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2Sub1.class);
-                
binder.bind(MockInterface3.class).to(MockImplementation3.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.bind(MockInterface2.class).to(MockImplementation2Sub1.class);
+            binder.bind(MockInterface3.class).to(MockImplementation3.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -116,12 +106,9 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testConstructorInjection() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.bind(MockInterface4.class).to(MockImplementation4.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(MockInterface4.class).to(MockImplementation4.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -134,14 +121,11 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testConstructorInjection_Named() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                binder.bind(Key.get(MockInterface1.class, 
"one")).to(MockImplementation1Alt.class);
-                binder.bind(Key.get(MockInterface1.class, 
"two")).to(MockImplementation1Alt2.class);
-                
binder.bind(MockInterface4.class).to(MockImplementation4Alt.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(Key.get(MockInterface1.class, 
"one")).to(MockImplementation1Alt.class);
+            binder.bind(Key.get(MockInterface1.class, 
"two")).to(MockImplementation1Alt2.class);
+            binder.bind(MockInterface4.class).to(MockImplementation4Alt.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -154,15 +138,12 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testConstructorInjection_Named_Mixed() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                binder.bind(Key.get(MockInterface1.class, 
"one")).to(MockImplementation1Alt.class);
-                binder.bind(Key.get(MockInterface1.class, 
"two")).to(MockImplementation1Alt2.class);
-                
binder.bind(MockInterface3.class).to(MockImplementation3.class);
-                
binder.bind(MockInterface4.class).to(MockImplementation4Alt2.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            binder.bind(Key.get(MockInterface1.class, 
"one")).to(MockImplementation1Alt.class);
+            binder.bind(Key.get(MockInterface1.class, 
"two")).to(MockImplementation1Alt2.class);
+            binder.bind(MockInterface3.class).to(MockImplementation3.class);
+            
binder.bind(MockInterface4.class).to(MockImplementation4Alt2.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -175,12 +156,9 @@ public class DefaultInjectorInjectionTest {
     @Test
     public void testProviderInjection_Constructor() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2_ConstructorProvider.class);
-            }
+        Module module = binder -> {
+            binder.bind(MockInterface1.class).to(MockImplementation1.class);
+            
binder.bind(MockInterface2.class).to(MockImplementation2_ConstructorProvider.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -191,14 +169,11 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testMapInjection_Empty() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
 
-                // empty map must be still bound
-                binder.bindMap(Object.class, "xyz");
-            }
+            // empty map must be still bound
+            binder.bindMap(Object.class, "xyz");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -213,12 +188,9 @@ public class DefaultInjectorInjectionTest {
     public void mapInjectionDeprecated() {
         final String bindingName = "xyz";
         final Object test = "test_map";
-        Module module = new Module() {
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
-                binder.bindMap(bindingName).put("test", test).put("abc", 
"def");
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
+            binder.bindMap(bindingName).put("test", test).put("abc", "def");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -242,13 +214,10 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testMapInjection() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
-                binder.bindMap(Object.class,"xyz")
-                        .put("x", "xvalue").put("y", "yvalue").put("x", 
"xvalue1");
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
+            binder.bindMap(Object.class,"xyz")
+                    .put("x", "xvalue").put("y", "yvalue").put("x", "xvalue1");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -260,12 +229,9 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void mapWithWildcardInjection() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapWithWildcards.class);
-                binder.bindMap(Class.class).put("x", String.class).put("y", 
Integer.class).put("z", Object.class);
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapWithWildcards.class);
+            binder.bindMap(Class.class).put("x", String.class).put("y", 
Integer.class).put("z", Object.class);
         };
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -287,15 +253,12 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testMapInjection_Resumed() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
-                // bind 1
-                binder.bindMap(Object.class,"xyz").put("x", "xvalue").put("y", 
"yvalue");
-                // second binding attempt to the same map...
-                binder.bindMap(Object.class,"xyz").put("z", "zvalue").put("x", 
"xvalue1");
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
+            // bind 1
+            binder.bindMap(Object.class,"xyz").put("x", "xvalue").put("y", 
"yvalue");
+            // second binding attempt to the same map...
+            binder.bindMap(Object.class,"xyz").put("z", "zvalue").put("x", 
"xvalue1");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -307,28 +270,20 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testMapInjection_OverrideExplicitlyBoundType() {
-        Module m1 = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface5.class).to(MockImplementation5.class);
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
+        Module m1 = binder -> {
+            binder.bind(MockInterface5.class).to(MockImplementation5.class);
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
 
-                binder.bindMap(Object.class, "xyz").put("a", 
MockInterface5.class);
-            }
+            binder.bindMap(Object.class, "xyz").put("a", MockInterface5.class);
         };
 
-        Module m2 = new Module() {
+        Module m2 = binder -> binder.bind(MockInterface5.class).toInstance(new 
MockInterface5() {
+
             @Override
-            public void configure(Binder binder) {
-                binder.bind(MockInterface5.class).toInstance(new 
MockInterface5() {
-
-                    @Override
-                    public String toString() {
-                        return "abc";
-                    }
-                });
+            public String toString() {
+                return "abc";
             }
-        };
+        });
 
         MockInterface1 service = new DefaultInjector(m1, 
m2).getInstance(MockInterface1.class);
         assertEquals("Map element was not overridden in submodule", ";a=abc", 
service.getName());
@@ -336,26 +291,18 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testMapInjection_OverrideImplicitlyBoundType() {
-        Module m1 = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
-                binder.bindMap(Object.class, "xyz").put("a", 
MockImplementation5.class);
-            }
+        Module m1 = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_MapConfiguration.class);
+            binder.bindMap(Object.class, "xyz").put("a", 
MockImplementation5.class);
         };
 
-        Module m2 = new Module() {
+        Module m2 = binder -> 
binder.bind(MockImplementation5.class).toInstance(new MockImplementation5() {
+
             @Override
-            public void configure(Binder binder) {
-                binder.bind(MockImplementation5.class).toInstance(new 
MockImplementation5() {
-
-                    @Override
-                    public String toString() {
-                        return "abc";
-                    }
-                });
+            public String toString() {
+                return "abc";
             }
-        };
+        });
 
         MockInterface1 service = new DefaultInjector(m1, 
m2).getInstance(MockInterface1.class);
         assertEquals("Map element was not overridden in submodule", ";a=abc", 
service.getName());
@@ -363,12 +310,9 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_addValue() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-                binder.bindList(Object.class, 
"xyz").add("xvalue").add("yvalue");
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+            binder.bindList(Object.class, "xyz").add("xvalue").add("yvalue");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -380,19 +324,16 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_addOrderedValues() {
-        Module module = new Module() {
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-                
binder.bind(MockInterface5.class).to(MockImplementation5.class);
-
-                binder.bindList(Object.class, "xyz")
-                        .add("1value")
-                        .add("2value")
-                        .addAfter("5value", MockInterface5.class)
-                        .insertBefore("3value", MockInterface5.class)
-                        .add(MockInterface5.class);
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+            binder.bind(MockInterface5.class).to(MockImplementation5.class);
+
+            binder.bindList(Object.class, "xyz")
+                    .add("1value")
+                    .add("2value")
+                    .addAfter("5value", MockInterface5.class)
+                    .insertBefore("3value", MockInterface5.class)
+                    .add(MockInterface5.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -404,29 +345,26 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_addAllValues() {
-        Module module = new Module() {
-            @Override
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-
-                Collection<Object> firstList = new ArrayList<>();
-                firstList.add("1value");
-                firstList.add("2value");
-                firstList.add("3value");
-
-                Collection<Object> secondList = new ArrayList<>();
-                secondList.add("6value");
-                secondList.add("7value");
-                secondList.add("8value");
-
-                
binder.bind(MockInterface5.class).to(MockImplementation5.class);
-
-                binder.bindList(Object.class, "xyz")
-                        .insertAllBefore(firstList, MockInterface5.class)
-                        .addAllAfter(secondList, MockInterface5.class)
-                        .add("5value")
-                        .add(MockInterface5.class);
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+
+            Collection<Object> firstList = new ArrayList<>();
+            firstList.add("1value");
+            firstList.add("2value");
+            firstList.add("3value");
+
+            Collection<Object> secondList = new ArrayList<>();
+            secondList.add("6value");
+            secondList.add("7value");
+            secondList.add("8value");
+
+            binder.bind(MockInterface5.class).to(MockImplementation5.class);
+
+            binder.bindList(Object.class, "xyz")
+                    .insertAllBefore(firstList, MockInterface5.class)
+                    .addAllAfter(secondList, MockInterface5.class)
+                    .add("5value")
+                    .add(MockInterface5.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -438,14 +376,11 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_addType() {
-        Module module = new Module() {
+        Module module = binder -> {
+            binder.bind(MockInterface5.class).to(MockImplementation5.class);
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
 
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface5.class).to(MockImplementation5.class);
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-
-                binder.bindList(Object.class, 
"xyz").add(MockInterface5.class).add("yvalue");
-            }
+            binder.bindList(Object.class, 
"xyz").add(MockInterface5.class).add("yvalue");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -457,20 +392,17 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_addOrderedTypes() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-                
binder.bind(MockInterface5.class).to(MockImplementation5.class);
-
-                binder.bindList(Object.class, "xyz")
-                        .add("1value")
-                        .insertBefore("5value", MockInterface5.class)
-                        .add("2value")
-                        .addAfter("6value", MockInterface5.class)
-                        .add("3value")
-                        .add(MockInterface5.class);
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+            binder.bind(MockInterface5.class).to(MockImplementation5.class);
+
+            binder.bindList(Object.class, "xyz")
+                    .add("1value")
+                    .insertBefore("5value", MockInterface5.class)
+                    .add("2value")
+                    .addAfter("6value", MockInterface5.class)
+                    .add("3value")
+                    .add(MockInterface5.class);
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -482,12 +414,9 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_addTypeWithBinding() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-                binder.bindList(Object.class, 
"xyz").add(MockImplementation5.class).add("yvalue");
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+            binder.bindList(Object.class, 
"xyz").add(MockImplementation5.class).add("yvalue");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -499,12 +428,9 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_empty() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-                binder.bindList(Object.class,"xyz");
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+            binder.bindList(Object.class,"xyz");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -516,14 +442,11 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_resumed() {
-        Module module = new Module() {
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
 
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-
-                binder.bindList(Object.class, 
"xyz").add("xvalue").add("yvalue");
-                binder.bindList(Object.class, "xyz").add("avalue");
-            }
+            binder.bindList(Object.class, "xyz").add("xvalue").add("yvalue");
+            binder.bindList(Object.class, "xyz").add("avalue");
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -535,51 +458,48 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testTypedListInjection() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfigurationMock5.class);
-                
binder.bind(MockInterface2.class).to(MockImplementation2_ListConfiguration.class);
-
-                // Bind list for MockImplementation2_ListConfiguration
-                binder.bindList(Object.class,"xyz")
-                        .add("xvalue")
-                        .add("yvalue")
-                        .add(MockImplementation5.class);
-
-                // Bind list for MockImplementation1_ListConfigurationMock5
-                binder.bindList(MockInterface5.class)
-                        .add(MockImplementation5.class)
-                        .add(new MockInterface5() {
-                            @Override
-                            public String toString() {
-                                return "abc";
-                            }
-                        });
-
-                binder.bindList(Object.class)
-                        .add("avalue")
-                        .add("bvalue")
-                        .add(MockImplementation5.class);
-
-                // Add to list for MockImplementation1_ListConfigurationMock5
-                binder.bindList(MockInterface5.class)
-                        .add(new MockInterface5() {
-                            @Override
-                            public String toString() {
-                                return "cde";
-                            }
-                        });
-
-                // Create named list for MockInterface5
-                binder.bindList(MockInterface5.class, "another_binding")
-                        .add(new MockInterface5() {
-                            @Override
-                            public String toString() {
-                                return "fgh";
-                            }
-                        });
-            }
+        Module module = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfigurationMock5.class);
+            
binder.bind(MockInterface2.class).to(MockImplementation2_ListConfiguration.class);
+
+            // Bind list for MockImplementation2_ListConfiguration
+            binder.bindList(Object.class,"xyz")
+                    .add("xvalue")
+                    .add("yvalue")
+                    .add(MockImplementation5.class);
+
+            // Bind list for MockImplementation1_ListConfigurationMock5
+            binder.bindList(MockInterface5.class)
+                    .add(MockImplementation5.class)
+                    .add(new MockInterface5() {
+                        @Override
+                        public String toString() {
+                            return "abc";
+                        }
+                    });
+
+            binder.bindList(Object.class)
+                    .add("avalue")
+                    .add("bvalue")
+                    .add(MockImplementation5.class);
+
+            // Add to list for MockImplementation1_ListConfigurationMock5
+            binder.bindList(MockInterface5.class)
+                    .add(new MockInterface5() {
+                        @Override
+                        public String toString() {
+                            return "cde";
+                        }
+                    });
+
+            // Create named list for MockInterface5
+            binder.bindList(MockInterface5.class, "another_binding")
+                    .add(new MockInterface5() {
+                        @Override
+                        public String toString() {
+                            return "fgh";
+                        }
+                    });
         };
 
         DefaultInjector injector = new DefaultInjector(module);
@@ -596,28 +516,20 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_OverrideExplicitlyBoundType() {
-        Module m1 = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface5.class).to(MockImplementation5.class);
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+        Module m1 = binder -> {
+            binder.bind(MockInterface5.class).to(MockImplementation5.class);
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
 
-                binder.bindList(Object.class, "xyz").add(MockInterface5.class);
-            }
+            binder.bindList(Object.class, "xyz").add(MockInterface5.class);
         };
 
-        Module m2 = new Module() {
+        Module m2 = binder -> binder.bind(MockInterface5.class).toInstance(new 
MockInterface5() {
+
             @Override
-            public void configure(Binder binder) {
-                binder.bind(MockInterface5.class).toInstance(new 
MockInterface5() {
-
-                    @Override
-                    public String toString() {
-                        return "abc";
-                    }
-                });
+            public String toString() {
+                return "abc";
             }
-        };
+        });
 
         MockInterface1 service = new DefaultInjector(m1, 
m2).getInstance(MockInterface1.class);
         assertEquals("List element was not overridden in submodule", ";abc", 
service.getName());
@@ -625,26 +537,18 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testListInjection_OverrideImplicitlyBoundType() {
-        Module m1 = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
-                binder.bindList(Object.class, 
"xyz").add(MockImplementation5.class);
-            }
+        Module m1 = binder -> {
+            
binder.bind(MockInterface1.class).to(MockImplementation1_ListConfiguration.class);
+            binder.bindList(Object.class, 
"xyz").add(MockImplementation5.class);
         };
 
-        Module m2 = new Module() {
+        Module m2 = binder -> 
binder.bind(MockImplementation5.class).toInstance(new MockImplementation5() {
+
             @Override
-            public void configure(Binder binder) {
-                binder.bind(MockImplementation5.class).toInstance(new 
MockImplementation5() {
-
-                    @Override
-                    public String toString() {
-                        return "abc";
-                    }
-                });
+            public String toString() {
+                return "abc";
             }
-        };
+        });
 
         MockInterface1 service = new DefaultInjector(m1, 
m2).getInstance(MockInterface1.class);
         assertEquals("List element was not overridden in submodule", ";abc", 
service.getName());
@@ -653,13 +557,8 @@ public class DefaultInjectorInjectionTest {
 
     @Test
     public void testInjectorInjection() {
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).to(
-                        MockImplementation1_WithInjector.class);
-            }
-        };
+        Module module = binder -> binder.bind(MockInterface1.class).to(
+                MockImplementation1_WithInjector.class);
 
         DefaultInjector injector = new DefaultInjector(module);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/3fc09431/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorScopeTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorScopeTest.java
 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorScopeTest.java
index 932b728..bd10ddb 100644
--- 
a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorScopeTest.java
+++ 
b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorScopeTest.java
@@ -19,7 +19,6 @@
 package org.apache.cayenne.di.spi;
 
 import org.apache.cayenne.di.BeforeScopeEnd;
-import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.mock.MockImplementation1;
 import org.apache.cayenne.di.mock.MockImplementation1_EventAnnotations;
@@ -27,24 +26,14 @@ import 
org.apache.cayenne.di.mock.MockImplementation1_Provider;
 import org.apache.cayenne.di.mock.MockInterface1;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 public class DefaultInjectorScopeTest {
 
     @Test
     public void testDefaultScope_IsSingleton() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                
binder.bind(MockInterface1.class).to(MockImplementation1.class);
-            }
-        };
+        Module module = binder -> 
binder.bind(MockInterface1.class).to(MockImplementation1.class);
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -63,15 +52,10 @@ public class DefaultInjectorScopeTest {
     @Test
     public void testNoScope() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder
-                        .bind(MockInterface1.class)
-                        .to(MockImplementation1.class)
-                        .withoutScope();
-            }
-        };
+        Module module = binder -> binder
+                .bind(MockInterface1.class)
+                .to(MockImplementation1.class)
+                .withoutScope();
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -91,15 +75,10 @@ public class DefaultInjectorScopeTest {
     @Test
     public void testSingletonScope() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder
-                        .bind(MockInterface1.class)
-                        .to(MockImplementation1.class)
-                        .inSingletonScope();
-            }
-        };
+        Module module = binder -> binder
+                .bind(MockInterface1.class)
+                .to(MockImplementation1.class)
+                .inSingletonScope();
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -120,13 +99,8 @@ public class DefaultInjectorScopeTest {
 
         MockImplementation1_EventAnnotations.reset();
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).to(
-                        
MockImplementation1_EventAnnotations.class).inSingletonScope();
-            }
-        };
+        Module module = binder -> binder.bind(MockInterface1.class).to(
+                MockImplementation1_EventAnnotations.class).inSingletonScope();
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -147,13 +121,10 @@ public class DefaultInjectorScopeTest {
     @Test
     public void testSingletonScope_WithProvider() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).toProvider(
-                        MockImplementation1_Provider.class).inSingletonScope();
-            }
-        };
+        Module module = binder -> binder
+                .bind(MockInterface1.class)
+                .toProvider(MockImplementation1_Provider.class)
+                .inSingletonScope();
 
         DefaultInjector injector = new DefaultInjector(module);
 
@@ -172,13 +143,9 @@ public class DefaultInjectorScopeTest {
     @Test
     public void testNoScope_WithProvider() {
 
-        Module module = new Module() {
-
-            public void configure(Binder binder) {
-                binder.bind(MockInterface1.class).toProvider(
-                        MockImplementation1_Provider.class).withoutScope();
-            }
-        };
+        Module module = binder -> binder
+                .bind(MockInterface1.class)
+                .toProvider(MockImplementation1_Provider.class).withoutScope();
 
         DefaultInjector injector = new DefaultInjector(module);
 

Reply via email to