Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
superrain51
apollo
提交
5207858e
apollo
项目概览
superrain51
/
apollo
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
apollo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5207858e
编写于
7月 28, 2016
作者:
张
张乐
提交者:
GitHub
7月 28, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #355 from nobodyiam/client-refactor
Client refactor
上级
4b487478
4df445f3
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
37 addition
and
31 deletion
+37
-31
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java
...framework/apollo/internals/LocalFileConfigRepository.java
+17
-5
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigLongPollService.java
...amework/apollo/internals/RemoteConfigLongPollService.java
+5
-0
apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
.../com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
+2
-5
apollo-client/src/test/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepositoryTest.java
...ework/apollo/internals/LocalFileConfigRepositoryTest.java
+13
-21
未找到文件。
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java
浏览文件 @
5207858e
...
...
@@ -49,6 +49,10 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
* @param namespace the namespace
*/
public
LocalFileConfigRepository
(
String
namespace
)
{
this
(
namespace
,
null
);
}
public
LocalFileConfigRepository
(
String
namespace
,
ConfigRepository
upstream
)
{
m_namespace
=
namespace
;
m_container
=
ContainerLoader
.
getDefaultContainer
();
try
{
...
...
@@ -57,13 +61,17 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
Cat
.
logError
(
ex
);
throw
new
ApolloConfigException
(
"Unable to load component!"
,
ex
);
}
this
.
setLocalCacheDir
(
findLocalCacheDir
());
this
.
setLocalCacheDir
(
findLocalCacheDir
(),
false
);
this
.
setUpstreamRepository
(
upstream
);
this
.
trySync
();
}
void
setLocalCacheDir
(
File
baseDir
)
{
void
setLocalCacheDir
(
File
baseDir
,
boolean
syncImmediately
)
{
m_baseDir
=
baseDir
;
this
.
checkLocalConfigCacheDir
(
m_baseDir
);
this
.
trySync
();
if
(
syncImmediately
)
{
this
.
trySync
();
}
}
private
File
findLocalCacheDir
()
{
...
...
@@ -95,6 +103,9 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
@Override
public
void
setUpstreamRepository
(
ConfigRepository
upstreamConfigRepository
)
{
if
(
upstreamConfigRepository
==
null
)
{
return
;
}
//clear previous listener
if
(
m_upstream
!=
null
)
{
m_upstream
.
removeChangeListener
(
this
);
...
...
@@ -118,7 +129,7 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
@Override
protected
void
sync
()
{
//sync with upstream immediately
boolean
syncFromUpstreamResultSuccess
=
trySyncFromUpstream
();
boolean
syncFromUpstreamResultSuccess
=
trySyncFromUpstream
();
if
(
syncFromUpstreamResultSuccess
)
{
return
;
...
...
@@ -252,7 +263,8 @@ public class LocalFileConfigRepository extends AbstractConfigRepository
}
catch
(
IOException
ex
)
{
ApolloConfigException
exception
=
new
ApolloConfigException
(
String
.
format
(
"Create local config directory %s failed"
,
baseDir
.
getAbsolutePath
()),
ex
);
String
.
format
(
"Create local config directory %s failed"
,
baseDir
.
getAbsolutePath
()),
ex
);
Cat
.
logError
(
exception
);
transaction
.
setStatus
(
exception
);
logger
.
warn
(
...
...
apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigLongPollService.java
浏览文件 @
5207858e
...
...
@@ -171,6 +171,11 @@ public class RemoteConfigLongPollService implements Initializable {
notify
(
lastServiceDto
,
response
.
getBody
());
}
//try to load balance
if
(
random
.
nextBoolean
())
{
lastServiceDto
=
null
;
}
m_longPollFailSchedulePolicyInSecond
.
success
();
transaction
.
addData
(
"StatusCode"
,
response
.
getStatusCode
());
transaction
.
setStatus
(
Message
.
SUCCESS
);
...
...
apollo-client/src/main/java/com/ctrip/framework/apollo/spi/DefaultConfigFactory.java
浏览文件 @
5207858e
...
...
@@ -46,16 +46,13 @@ public class DefaultConfigFactory implements ConfigFactory {
}
LocalFileConfigRepository
createLocalConfigRepository
(
String
namespace
)
{
LocalFileConfigRepository
localFileConfigRepository
=
new
LocalFileConfigRepository
(
namespace
);
if
(
m_configUtil
.
isInLocalMode
())
{
logger
.
warn
(
"==== Apollo is in local mode! Won't pull configs from remote server for namespace {} ! ===="
,
namespace
);
}
else
{
localFileConfigRepository
.
setUpstreamRepository
(
createRemoteConfigRepository
(
namespace
));
return
new
LocalFileConfigRepository
(
namespace
);
}
return
localFileConfigRepository
;
return
new
LocalFileConfigRepository
(
namespace
,
createRemoteConfigRepository
(
namespace
))
;
}
RemoteConfigRepository
createRemoteConfigRepository
(
String
namespace
)
{
...
...
apollo-client/src/test/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepositoryTest.java
浏览文件 @
5207858e
...
...
@@ -33,7 +33,7 @@ import static org.mockito.Mockito.when;
public
class
LocalFileConfigRepositoryTest
extends
ComponentTestCase
{
private
File
someBaseDir
;
private
String
someNamespace
;
private
ConfigRepository
fallback
Repo
;
private
ConfigRepository
upstream
Repo
;
private
Properties
someProperties
;
private
static
String
someAppId
=
"someApp"
;
private
static
String
someCluster
=
"someCluster"
;
...
...
@@ -51,8 +51,8 @@ public class LocalFileConfigRepositoryTest extends ComponentTestCase {
defaultKey
=
"defaultKey"
;
defaultValue
=
"defaultValue"
;
someProperties
.
setProperty
(
defaultKey
,
defaultValue
);
fallback
Repo
=
mock
(
ConfigRepository
.
class
);
when
(
fallback
Repo
.
getConfig
()).
thenReturn
(
someProperties
);
upstream
Repo
=
mock
(
ConfigRepository
.
class
);
when
(
upstream
Repo
.
getConfig
()).
thenReturn
(
someProperties
);
defineComponent
(
ConfigUtil
.
class
,
MockConfigUtil
.
class
);
}
...
...
@@ -93,7 +93,7 @@ public class LocalFileConfigRepositoryTest extends ComponentTestCase {
createLocalCachePropertyFile
(
someProperties
);
LocalFileConfigRepository
localRepo
=
new
LocalFileConfigRepository
(
someNamespace
);
localRepo
.
setLocalCacheDir
(
someBaseDir
);
localRepo
.
setLocalCacheDir
(
someBaseDir
,
true
);
Properties
properties
=
localRepo
.
getConfig
();
assertEquals
(
someValue
,
properties
.
getProperty
(
someKey
));
...
...
@@ -108,11 +108,8 @@ public class LocalFileConfigRepositoryTest extends ComponentTestCase {
Files
.
write
(
defaultKey
+
"="
+
someValue
,
file
,
Charsets
.
UTF_8
);
LocalFileConfigRepository
localRepo
=
new
LocalFileConfigRepository
(
someNamespace
);
localRepo
.
setLocalCacheDir
(
someBaseDir
);
//when fallback is set, it will try to sync from it
localRepo
.
setUpstreamRepository
(
fallbackRepo
);
LocalFileConfigRepository
localRepo
=
new
LocalFileConfigRepository
(
someNamespace
,
upstreamRepo
);
localRepo
.
setLocalCacheDir
(
someBaseDir
,
true
);
Properties
properties
=
localRepo
.
getConfig
();
...
...
@@ -123,10 +120,8 @@ public class LocalFileConfigRepositoryTest extends ComponentTestCase {
public
void
testLoadConfigWithNoLocalFile
()
throws
Exception
{
LocalFileConfigRepository
localFileConfigRepository
=
new
LocalFileConfigRepository
(
someNamespace
);
localFileConfigRepository
.
setLocalCacheDir
(
someBaseDir
);
localFileConfigRepository
.
setUpstreamRepository
(
fallbackRepo
);
new
LocalFileConfigRepository
(
someNamespace
,
upstreamRepo
);
localFileConfigRepository
.
setLocalCacheDir
(
someBaseDir
,
true
);
Properties
result
=
localFileConfigRepository
.
getConfig
();
...
...
@@ -138,17 +133,15 @@ public class LocalFileConfigRepositoryTest extends ComponentTestCase {
@Test
public
void
testLoadConfigWithNoLocalFileMultipleTimes
()
throws
Exception
{
LocalFileConfigRepository
localRepo
=
new
LocalFileConfigRepository
(
someNamespace
);
localRepo
.
setLocalCacheDir
(
someBaseDir
);
localRepo
.
setUpstreamRepository
(
fallbackRepo
);
new
LocalFileConfigRepository
(
someNamespace
,
upstreamRepo
);
localRepo
.
setLocalCacheDir
(
someBaseDir
,
true
);
Properties
someProperties
=
localRepo
.
getConfig
();
LocalFileConfigRepository
anotherLocalRepoWithNoFallback
=
new
LocalFileConfigRepository
(
someNamespace
);
anotherLocalRepoWithNoFallback
.
setLocalCacheDir
(
someBaseDir
);
anotherLocalRepoWithNoFallback
.
setLocalCacheDir
(
someBaseDir
,
true
);
Properties
anotherProperties
=
anotherLocalRepoWithNoFallback
.
getConfig
();
...
...
@@ -163,9 +156,8 @@ public class LocalFileConfigRepositoryTest extends ComponentTestCase {
RepositoryChangeListener
someListener
=
mock
(
RepositoryChangeListener
.
class
);
LocalFileConfigRepository
localFileConfigRepository
=
new
LocalFileConfigRepository
(
someNamespace
);
localFileConfigRepository
.
setLocalCacheDir
(
someBaseDir
);
localFileConfigRepository
.
setUpstreamRepository
(
fallbackRepo
);
new
LocalFileConfigRepository
(
someNamespace
,
upstreamRepo
);
localFileConfigRepository
.
setLocalCacheDir
(
someBaseDir
,
true
);
localFileConfigRepository
.
addChangeListener
(
someListener
);
localFileConfigRepository
.
getConfig
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录