You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2016/08/10 03:34:47 UTC
incubator-eagle git commit: [EAGLE-441] AppConfig will override
EnvConfig and EnvConfig is default config
Repository: incubator-eagle
Updated Branches:
refs/heads/develop ad5becc9f -> 9b10f2222
[EAGLE-441] AppConfig will override EnvConfig and EnvConfig is default config
https://issues.apache.org/jira/browse/EAGLE-441
Author: Hao Chen <ha...@apache.org>
Closes #320 from haoch/EAGLE-441.
Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/9b10f222
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/9b10f222
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/9b10f222
Branch: refs/heads/develop
Commit: 9b10f22221b60f0f6451e71ac3396b326f9565ef
Parents: ad5becc
Author: Hao Chen <ha...@apache.org>
Authored: Wed Aug 10 11:34:31 2016 +0800
Committer: Hao Chen <ha...@apache.org>
Committed: Wed Aug 10 11:34:31 2016 +0800
----------------------------------------------------------------------
.../eagle/app/service/ApplicationContext.java | 7 ++-
.../app/service/ApplicationContextTest.java | 48 ++++++++++++++++++++
2 files changed, 51 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/9b10f222/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
index ed89ea8..d577095 100644
--- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
+++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/service/ApplicationContext.java
@@ -52,18 +52,17 @@ public class ApplicationContext implements Serializable, ApplicationLifecycle {
* @param metadata ApplicationEntity
* @param application Application
*/
- public ApplicationContext(Application application, ApplicationEntity metadata, Config config1){
+ public ApplicationContext(Application application, ApplicationEntity metadata, Config envConfig){
Preconditions.checkNotNull(application,"Application is null");
Preconditions.checkNotNull(metadata,"ApplicationEntity is null");
this.application = application;
this.metadata = metadata;
- this.runtime = ExecutionRuntimeManager.getInstance().getRuntime(application.getEnvironmentType(),config1);
+ this.runtime = ExecutionRuntimeManager.getInstance().getRuntime(application.getEnvironmentType(),envConfig);
Map<String,Object> applicationConfig = metadata.getConfiguration();
if(applicationConfig == null) {
applicationConfig = Collections.emptyMap();
}
- // TODO: Merge application config with environment config
- this.config = ConfigFactory.parseMap(applicationConfig);
+ this.config = ConfigFactory.parseMap(applicationConfig).withFallback(envConfig);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/9b10f222/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/service/ApplicationContextTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/service/ApplicationContextTest.java b/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/service/ApplicationContextTest.java
new file mode 100644
index 0000000..b93bf2d
--- /dev/null
+++ b/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/service/ApplicationContextTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.eagle.app.service;
+
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.HashMap;
+
+public class ApplicationContextTest {
+ /**
+ * appConfig.withFallback(envConfig): appConfig will override envConfig, envConfig is used as default config
+ */
+ @Test
+ public void testTypeSafeConfigMerge(){
+ Config appConfig = ConfigFactory.parseMap(new HashMap<String,String>(){{
+ put("APP_CONFIG",ApplicationContextTest.this.getClass().getCanonicalName());
+ put("SCOPE","APP");
+ }});
+
+ Config envConfig = ConfigFactory.parseMap(new HashMap<String,String>(){{
+ put("ENV_CONFIG",ApplicationContextTest.this.getClass().getCanonicalName());
+ put("SCOPE","ENV");
+ }});
+
+ Config mergedConfig = appConfig.withFallback(envConfig);
+ Assert.assertTrue(mergedConfig.hasPath("APP_CONFIG"));
+ Assert.assertTrue(mergedConfig.hasPath("ENV_CONFIG"));
+ Assert.assertEquals("appConfig.withFallback(envConfig): appConfig will override envConfig, envConfig is used as default config",
+ "APP",mergedConfig.getString("SCOPE"));
+ }
+}
\ No newline at end of file