diff --git a/.gitignore b/.gitignore index 46e4ba266b7cb2a01718d241e6c9f3b091b1ea81..3f5e17ddf77eeb0dc9e0a7e6b3ad74805238843c 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,4 @@ target # git *.orig -dev -fat -uat -prd +application-dev.properties \ No newline at end of file diff --git a/apollo-adminservice/src/main/resources/application.yml b/apollo-adminservice/src/main/resources/application.yml index dc8ace4b490f22c0eb6578090be83300934cb50c..8276ec0d76d5eff9d7485e133223437706295a66 100644 --- a/apollo-adminservice/src/main/resources/application.yml +++ b/apollo-adminservice/src/main/resources/application.yml @@ -1,7 +1,9 @@ spring: application: name: apollo-adminservice - + profiles: + active: ctrip + server: port: ${port:8090} diff --git a/apollo-biz/pom.xml b/apollo-biz/pom.xml index 34db53fd988bbe7737c41711c3dcc4e65b4660ff..1b08a15d467479f6f75066795dec74be8effc22e 100644 --- a/apollo-biz/pom.xml +++ b/apollo-biz/pom.xml @@ -36,4 +36,12 @@ test + + + + src/main/resources + true + + + diff --git a/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanCondition.java b/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanCondition.java index e9f93f470fdcac2abe806da01dc109781ec6a288..67e4c9c5761ed382f57b0360c2907f252530fbcc 100644 --- a/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanCondition.java +++ b/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanCondition.java @@ -10,7 +10,11 @@ public class TitanCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { - if (!StringUtils.isEmpty(context.getEnvironment().getProperty("titan.url"))) { + if (!StringUtils.isEmpty(context.getEnvironment().getProperty("fat.titan.url"))) { + return true; + } else if (!StringUtils.isEmpty(context.getEnvironment().getProperty("uat.titan.url"))) { + return true; + } else if (!StringUtils.isEmpty(context.getEnvironment().getProperty("pro.titan.url"))) { return true; } return false; diff --git a/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanSettings.java b/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanSettings.java index 8d1d3b276a472e7214bc786a2044233ee93f302b..b64acf9fd3d53428998d337a92d81ba24dddc79a 100644 --- a/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanSettings.java +++ b/apollo-biz/src/main/java/com/ctrip/apollo/biz/datasource/TitanSettings.java @@ -3,28 +3,61 @@ package com.ctrip.apollo.biz.datasource; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import com.ctrip.apollo.core.enums.Env; +import com.ctrip.apollo.core.enums.EnvUtils; +import com.ctrip.framework.foundation.Foundation; + @Component public class TitanSettings { - @Value("${titan.url:}") - private String titanUrl; + @Value("${fat.titan.url:}") + private String fatTitanUrl; - @Value("${titan.dbname:}") - private String titanDbname; + @Value("${uat.titan.url:}") + private String uatTitanUrl; - public String getTitanUrl() { - return titanUrl; - } + @Value("${pro.titan.url:}") + private String proTitanUrl; + + @Value("${fat.titan.dbname:}") + private String fatTitanDbname; - public void setTitanUrl(String titanUrl) { - this.titanUrl = titanUrl; + @Value("${uat.titan.dbname:}") + private String uatTitanDbname; + + @Value("${pro.titan.dbname:}") + private String proTitanDbname; + + public String getTitanUrl() { + Env env = EnvUtils.transformEnv(Foundation.server().getEnvType()); + switch (env) { + case FAT: + case FWS: + return fatTitanUrl; + case UAT: + return uatTitanUrl; + case TOOLS: + case PRO: + return proTitanUrl; + default: + return ""; + } } public String getTitanDbname() { - return titanDbname; + Env env = EnvUtils.transformEnv(Foundation.server().getEnvType()); + switch (env) { + case FAT: + case FWS: + return fatTitanDbname; + case UAT: + return uatTitanDbname; + case TOOLS: + case PRO: + return proTitanDbname; + default: + return ""; + } } - public void setTitanDbname(String titanDbname) { - this.titanDbname = titanDbname; - } } diff --git a/apollo-biz/src/main/resources/application-ctrip.properties b/apollo-biz/src/main/resources/application-ctrip.properties new file mode 100644 index 0000000000000000000000000000000000000000..721ec8022133698400f5a723afb14c52046cc0b4 --- /dev/null +++ b/apollo-biz/src/main/resources/application-ctrip.properties @@ -0,0 +1,7 @@ +# Titan Datasource (Ctrip only) +fat.titan.url=${fat_titan_url} +fat.titan.dbname=${fat_titan_dbname} +uat.titan.url=${uat_titan_url} +uat.titan.dbname=${uat_titan_dbname} +pro.titan.url=${pro_titan_url} +pro.titan.dbname=${pro_titan_dbname} diff --git a/apollo-biz/src/main/resources/application.properties b/apollo-biz/src/main/resources/application.properties new file mode 100644 index 0000000000000000000000000000000000000000..6d7623c4595fd9e935e710785a3c20eb8d48b0ac --- /dev/null +++ b/apollo-biz/src/main/resources/application.properties @@ -0,0 +1,10 @@ +# DataSource +spring.datasource.testWhileIdle=true +spring.datasource.testOnBorrow=true +spring.datasource.validationQuery=SELECT 1 + +# Naming strategy +spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy +spring.jpa.hibernate.globally_quoted_identifiers=true +spring.jpa.properties.hibernate.globally_quoted_identifiers=true +spring.jpa.properties.hibernate.show_sql=true diff --git a/apollo-client/src/main/java/com/ctrip/apollo/util/ConfigUtil.java b/apollo-client/src/main/java/com/ctrip/apollo/util/ConfigUtil.java index a564aec28d2bbf3e3e86cbeec1105fef17a75274..768d7ef5d71f064d5fe7a962f20194dd9c3535e3 100644 --- a/apollo-client/src/main/java/com/ctrip/apollo/util/ConfigUtil.java +++ b/apollo-client/src/main/java/com/ctrip/apollo/util/ConfigUtil.java @@ -1,11 +1,11 @@ package com.ctrip.apollo.util; import com.google.common.base.Preconditions; -import com.google.common.base.Strings; import com.ctrip.apollo.core.ConfigConsts; import com.ctrip.apollo.core.MetaDomainConsts; import com.ctrip.apollo.core.enums.Env; +import com.ctrip.apollo.core.enums.EnvUtils; import com.ctrip.framework.foundation.Foundation; import org.unidal.lookup.annotation.Named; @@ -60,34 +60,11 @@ public class ConfigUtil { * @throws IllegalStateException if env is set */ public Env getApolloEnv() { - Env env = transformEnv(Foundation.server().getEnvType()); + Env env = EnvUtils.transformEnv(Foundation.server().getEnvType()); Preconditions.checkState(env != null, "env is not set"); return env; } - private Env transformEnv(String envName) { - if (Strings.isNullOrEmpty(envName)) { - return null; - } - switch (envName.toUpperCase()) { - case "LPT": - return Env.LPT; - case "FAT": - case "FWS": - return Env.FAT; - case "UAT": - return Env.UAT; - case "PRO": - return Env.PRO; - case "DEV": - return Env.DEV; - case "LOCAL": - return Env.LOCAL; - default: - return null; - } - } - public String getMetaServerDomainName() { return MetaDomainConsts.getDomain(getApolloEnv()); } diff --git a/apollo-configservice/src/main/resources/application.yml b/apollo-configservice/src/main/resources/application.yml index 405fe3057d0a0f48c49c5246025f993e02e318d3..9f8bd71abc4f95ecf80b9d34354234b1b01ac171 100644 --- a/apollo-configservice/src/main/resources/application.yml +++ b/apollo-configservice/src/main/resources/application.yml @@ -1,6 +1,8 @@ spring: application: name: apollo-configservice + profiles: + active: ctrip server: port: ${port:8080} diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/MetaDomainConsts.java b/apollo-core/src/main/java/com/ctrip/apollo/core/MetaDomainConsts.java index a5bbd35abc7b96b359efff1cd4966a63bb522dfd..60491533908fd9905dc87b50a351cbb9394455b0 100644 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/MetaDomainConsts.java +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/MetaDomainConsts.java @@ -7,24 +7,38 @@ import java.util.Properties; import com.ctrip.apollo.core.enums.Env; import com.ctrip.apollo.core.utils.ResourceUtils; +/** + * The meta domain will load the meta server from System environment first, if not exist, will load + * from apollo-env.properties. If neither exists, will load the default meta url. + * + * Currently, apollo supports local/dev/fat/uat/lpt/pro environments. + */ +@SuppressWarnings({"rawtypes", "unchecked"}) public class MetaDomainConsts { - private static Map domains = new HashMap<>(); + private static Map domains = new HashMap<>(); + + public static final String DEFAULT_META_URL = "http://localhost:8080"; static { Properties prop = new Properties(); prop = ResourceUtils.readConfigFile("apollo-env.properties", prop); - domains.put(Env.LOCAL, prop.getProperty("local.meta", "http://localhost:8080")); - domains.put(Env.DEV, prop.getProperty("dev.meta")); - domains.put(Env.FAT, prop.getProperty("fat.meta")); - domains.put(Env.FWS, prop.getProperty("fws.meta")); - domains.put(Env.UAT, prop.getProperty("uat.meta")); - domains.put(Env.LPT, prop.getProperty("lpt.meta")); - domains.put(Env.TOOLS, prop.getProperty("tools.meta")); - domains.put(Env.PRO, prop.getProperty("pro.meta")); + Map env = System.getProperties(); + domains.put(Env.LOCAL, + env.getOrDefault("local_meta", prop.getProperty("local.meta", DEFAULT_META_URL))); + domains.put(Env.DEV, + env.getOrDefault("dev_meta", prop.getProperty("dev.meta", DEFAULT_META_URL))); + domains.put(Env.FAT, + env.getOrDefault("fat_meta", prop.getProperty("fat.meta", DEFAULT_META_URL))); + domains.put(Env.UAT, + env.getOrDefault("uat_meta", prop.getProperty("uat.meta", DEFAULT_META_URL))); + domains.put(Env.LPT, + env.getOrDefault("lpt_meta", prop.getProperty("lpt.meta", DEFAULT_META_URL))); + domains.put(Env.PRO, + env.getOrDefault("pro_meta", prop.getProperty("pro.meta", DEFAULT_META_URL))); } public static String getDomain(Env env) { - return domains.get(env); + return String.valueOf(domains.get(env)); } } diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/enums/EnvUtils.java b/apollo-core/src/main/java/com/ctrip/apollo/core/enums/EnvUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..84f7c9b1857a0348f69ae20da717478b7402dd7d --- /dev/null +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/enums/EnvUtils.java @@ -0,0 +1,29 @@ +package com.ctrip.apollo.core.enums; + +import com.ctrip.apollo.core.utils.StringUtils; + +public final class EnvUtils { + + public static Env transformEnv(String envName) { + if (StringUtils.isBlank(envName)) { + return null; + } + switch (envName.toUpperCase()) { + case "LPT": + return Env.LPT; + case "FAT": + case "FWS": + return Env.FAT; + case "UAT": + return Env.UAT; + case "PRO": + return Env.PRO; + case "DEV": + return Env.DEV; + case "LOCAL": + return Env.LOCAL; + default: + return null; + } + } +} diff --git a/apollo-core/src/main/resources/apollo-env.properties b/apollo-core/src/main/resources/apollo-env.properties index 1064c16d52f03e96e047f5370cca39833c225b72..01c607d15ea8de644e18dd447adc0f75607ca85e 100644 --- a/apollo-core/src/main/resources/apollo-env.properties +++ b/apollo-core/src/main/resources/apollo-env.properties @@ -1,6 +1,5 @@ local.meta=http://localhost:8080 -dev.meta=${dev} -fat.meta=${fat} -uat.meta=${uat} -lpt.meta=${lpt} -pro.meta=${pro} +dev.meta=${dev_meta} +fat.meta=${fat_meta} +uat.meta=${uat_meta} +pro.meta=${pro_meta} diff --git a/apollo-core/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java b/apollo-core/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java index 554ee09da06e38f9e78e03f31daace096594e994..449e5105d5204bfe0796f7f370769873a3a6c258 100644 --- a/apollo-core/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java +++ b/apollo-core/src/test/java/com/ctrip/apollo/core/MetaDomainTest.java @@ -11,6 +11,6 @@ public class MetaDomainTest { public void testGetMetaDomain() { Assert.assertEquals("http://localhost:8080", MetaDomainConsts.getDomain(Env.LOCAL)); Assert.assertEquals("http://dev:8080", MetaDomainConsts.getDomain(Env.DEV)); - Assert.assertNull(MetaDomainConsts.getDomain(Env.PRO)); + Assert.assertEquals(MetaDomainConsts.DEFAULT_META_URL, MetaDomainConsts.getDomain(Env.PRO)); } } diff --git a/apollo-portal/src/main/resources/application.yml b/apollo-portal/src/main/resources/application.yml index 258e6cbad1433a48ebd1d90380e5dff30edc21e8..25913dd8ec5e5f25af5c957899b3db2a49253218 100644 --- a/apollo-portal/src/main/resources/application.yml +++ b/apollo-portal/src/main/resources/application.yml @@ -4,7 +4,9 @@ server: spring: application: name: apollo-portal - + profiles: + active: ctrip + logging: level: org.springframework.cloud: 'DEBUG' diff --git a/pom.xml b/pom.xml index 5b147ef7e81499ad0a37750fe8ebd199ef49dea8..dc650674dcea927b6fbcc9260ee7d7af1083f3fd 100644 --- a/pom.xml +++ b/pom.xml @@ -124,12 +124,12 @@ com.ctrip.framework framework-foundation - 1.1.4 + 1.1.5 com.dianping.cat cat-client - 1.4.6 + 1.5.0 com.ctrip.platform