Repository: cayenne
Updated Branches:
  refs/heads/master 3b22b4757 -> 87c9c8f4b


Tests for ClientRuntimeBuilder + minor fix for uninitialized properties


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

Branch: refs/heads/master
Commit: 231069ac975775a6caaa1567cc4930e5738a1faa
Parents: 3b22b47
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Fri Apr 28 10:36:12 2017 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Fri Apr 28 10:36:12 2017 +0300

----------------------------------------------------------------------
 .../rop/client/ClientLocalRuntime.java          |   2 +-
 .../configuration/rop/client/ClientModule.java  |   7 +-
 .../rop/client/ClientRuntimeBuilder.java        |   2 +-
 .../rop/client/ClientRuntimeBuilderTest.java    | 101 +++++++++++++++++++
 4 files changed, 108 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/231069ac/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 af1ddd5..27cf9b6 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
@@ -43,7 +43,7 @@ import static java.util.Arrays.asList;
 public class ClientLocalRuntime extends ClientRuntime {
 
     /**
-     * Moved to {@link ClientRuntime#CLIENT_SERVER_CHANNEL_KEY}
+     * @since 4.0 moved to {@link ClientRuntime#CLIENT_SERVER_CHANNEL_KEY}
      */
     public static final String CLIENT_SERVER_CHANNEL_KEY = 
"client-server-channel";
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/231069ac/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
 
b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
index efae1c8..690ed2c 100644
--- 
a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
+++ 
b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
@@ -23,12 +23,12 @@ import java.util.Map;
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.cache.MapQueryCacheProvider;
 import org.apache.cayenne.cache.QueryCache;
-import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.configuration.server.ServerModule;
 import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.MapBuilder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.event.EventManager;
@@ -74,10 +74,13 @@ public class ClientModule implements Module {
     @SuppressWarnings("deprecation")
     public void configure(Binder binder) {
 
+        // Contribute always to create binding
+        MapBuilder<String> propertiesBuilder = 
ServerModule.contributeProperties(binder);
+
         // expose user-provided ROP properties as the main properties map
         // binding here is left only for backward compatibility, should go 
away with the deprecated code.
         if(properties != null) {
-            ServerModule.contributeProperties(binder).putAll(properties);
+            propertiesBuilder.putAll(properties);
         }
 
         
binder.bind(ObjectContextFactory.class).to(CayenneContextFactory.class);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/231069ac/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 743da78..d8c2aef 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
@@ -63,7 +63,7 @@ public class ClientRuntimeBuilder {
 
     /**
      * Disables DI module auto-loading. By default auto-loading is enabled 
based on
-     * {@link org.apache.cayenne.di.spi.ModuleLoader} service provider 
interface.
+     * {@link CayenneClientModuleProvider} service provider interface.
      * If you decide to disable auto-loading, make sure you provide all the 
modules that you need.
      *
      * @return this builder instance.

http://git-wip-us.apache.org/repos/asf/cayenne/blob/231069ac/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilderTest.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilderTest.java
new file mode 100644
index 0000000..c324ead
--- /dev/null
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeBuilderTest.java
@@ -0,0 +1,101 @@
+/*****************************************************************
+ *   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.configuration.rop.client;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.di.Key;
+import org.apache.cayenne.di.Module;
+import org.junit.After;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+
+/**
+ * @since 4.0
+ */
+public class ClientRuntimeBuilderTest {
+
+    private ClientRuntime runtime;
+
+    @After
+    public void stopRuntime() {
+        if (runtime != null) {
+            runtime.shutdown();
+        }
+    }
+
+    @Test
+    public void testDefaultBuild() {
+        runtime = new ClientRuntimeBuilder().build();
+
+        Map<String, String> properties = runtime.getInjector()
+                .getInstance(Key.getMapOf(String.class, String.class, 
Constants.PROPERTIES_MAP));
+        assertTrue(properties.isEmpty());
+
+        Collection<Module> modules = runtime.getModules();
+        assertEquals(1, modules.size());
+        assertThat(modules.iterator().next(), instanceOf(ClientModule.class));
+    }
+
+    @Test
+    public void testNoAutoLoading() {
+        runtime = new 
ClientRuntimeBuilder().disableModulesAutoLoading().build();
+
+        Map<String, String> properties = runtime.getInjector()
+                .getInstance(Key.getMapOf(String.class, String.class, 
Constants.PROPERTIES_MAP));
+        assertTrue(properties.isEmpty());
+
+        Collection<Module> modules = runtime.getModules();
+        assertEquals(1, modules.size());
+        assertThat(modules.iterator().next(), instanceOf(ClientModule.class));
+    }
+
+    @Test
+    public void testExtraModules() {
+
+        Module m = mock(Module.class);
+
+        runtime = new ClientRuntimeBuilder().addModule(m).build();
+
+        Collection<Module> modules = runtime.getModules();
+        assertEquals(2, modules.size());
+        Module[] array = modules.toArray(new Module[2]);
+        assertThat(array[0], instanceOf(ClientModule.class));
+        assertSame(m, array[1]);
+    }
+
+    @Test
+    public void testProperties() {
+        Map<String, String> properties = Collections.singletonMap("test", 
"test_value");
+
+        runtime = new ClientRuntimeBuilder().properties(properties).build();
+
+        Map<String, String> injectedProperties = runtime.getInjector()
+                .getInstance(Key.getMapOf(String.class, String.class, 
Constants.PROPERTIES_MAP));
+        assertEquals(properties, injectedProperties);
+    }
+
+}
\ No newline at end of file

Reply via email to