Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
89a11462
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
89a11462
编写于
9月 09, 2013
作者:
J
Jesse Glick
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[FIXED JENKINS-18337] Must use xmlEscape for freeform text fields in fingerprint XML.
上级
7e131ec2
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
31 addition
and
8 deletion
+31
-8
changelog.html
changelog.html
+3
-0
core/src/main/java/hudson/model/Fingerprint.java
core/src/main/java/hudson/model/Fingerprint.java
+25
-6
core/src/main/java/hudson/model/FingerprintCleanupThread.java
.../src/main/java/hudson/model/FingerprintCleanupThread.java
+1
-1
core/src/test/java/hudson/model/FingerprintTest.java
core/src/test/java/hudson/model/FingerprintTest.java
+2
-1
未找到文件。
changelog.html
浏览文件 @
89a11462
...
...
@@ -64,6 +64,9 @@ Upcoming changes</a>
<li
class=
bug
>
Identify user agent for Internet Explorer 11.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-19171"
>
issue 19171
</a>
)
<li
class=
bug
>
Since 1.518, fingerprint serialization broke when job or file names contained XML special characters like ampersands.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-18337"
>
issue 18337
</a>
)
<li
class=
rfe
>
JavaScript error in the checkUrl computation shouldn't break the job configuration page.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-19457"
>
issue 19457
</a>
)
...
...
core/src/main/java/hudson/model/Fingerprint.java
浏览文件 @
89a11462
...
...
@@ -66,6 +66,8 @@ import java.util.Map.Entry;
import
java.util.TreeMap
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
javax.annotation.CheckForNull
;
import
org.xmlpull.v1.XmlPullParserException
;
/**
* A file being tracked by Jenkins.
...
...
@@ -1109,7 +1111,7 @@ public class Fingerprint implements ModelObject, Saveable {
if
(
original
!=
null
)
{
w
.
println
(
" <original>"
);
w
.
print
(
" <name>"
);
w
.
print
(
original
.
name
);
w
.
print
(
Util
.
xmlEscape
(
original
.
name
)
);
w
.
println
(
"</name>"
);
w
.
print
(
" <number>"
);
w
.
print
(
original
.
number
);
...
...
@@ -1120,13 +1122,13 @@ public class Fingerprint implements ModelObject, Saveable {
w
.
print
(
Util
.
toHexString
(
md5sum
));
w
.
println
(
"</md5sum>"
);
w
.
print
(
" <fileName>"
);
w
.
print
(
fileName
);
w
.
print
(
Util
.
xmlEscape
(
fileName
)
);
w
.
println
(
"</fileName>"
);
w
.
println
(
" <usages>"
);
for
(
Map
.
Entry
<
String
,
RangeSet
>
e
:
usages
.
entrySet
())
{
w
.
println
(
" <entry>"
);
w
.
print
(
" <string>"
);
w
.
print
(
e
.
getKey
(
));
w
.
print
(
Util
.
xmlEscape
(
e
.
getKey
()
));
w
.
println
(
"</string>"
);
w
.
print
(
" <ranges>"
);
w
.
print
(
RangeSet
.
ConverterImpl
.
serialize
(
e
.
getValue
()));
...
...
@@ -1195,10 +1197,10 @@ public class Fingerprint implements ModelObject, Saveable {
/**
* Loads a {@link Fingerprint} from a file in the image.
*/
/*package*/
static
Fingerprint
load
(
byte
[]
md5sum
)
throws
IOException
{
/*package*/
static
@CheckForNull
Fingerprint
load
(
byte
[]
md5sum
)
throws
IOException
{
return
load
(
getFingerprintFile
(
md5sum
));
}
/*package*/
static
Fingerprint
load
(
File
file
)
throws
IOException
{
/*package*/
static
@CheckForNull
Fingerprint
load
(
File
file
)
throws
IOException
{
XmlFile
configFile
=
getConfigFile
(
file
);
if
(!
configFile
.
exists
())
return
null
;
...
...
@@ -1224,7 +1226,13 @@ public class Fingerprint implements ModelObject, Saveable {
// generally we don't want to wipe out user data just because we can't load it,
// but if the file size is 0, which is what's reported in HUDSON-2012, then it seems
// like recovering it silently by deleting the file is not a bad idea.
logger
.
log
(
Level
.
WARNING
,
"Size zero fingerprint. Disk corruption? "
+
configFile
,
e
);
logger
.
log
(
Level
.
WARNING
,
"Size zero fingerprint. Disk corruption? {0}"
,
configFile
);
file
.
delete
();
return
null
;
}
String
parseError
=
messageOfXmlPullParserException
(
e
);
if
(
parseError
!=
null
)
{
logger
.
log
(
Level
.
WARNING
,
"Malformed XML in {0}: {1}"
,
new
Object
[]
{
configFile
,
parseError
});
file
.
delete
();
return
null
;
}
...
...
@@ -1232,6 +1240,17 @@ public class Fingerprint implements ModelObject, Saveable {
throw
e
;
}
}
private
static
String
messageOfXmlPullParserException
(
Throwable
t
)
{
if
(
t
instanceof
XmlPullParserException
)
{
return
t
.
getMessage
();
}
Throwable
t2
=
t
.
getCause
();
if
(
t2
!=
null
)
{
return
messageOfXmlPullParserException
(
t2
);
}
else
{
return
null
;
}
}
@Override
public
String
toString
()
{
return
"Fingerprint[original="
+
original
+
",hash="
+
getHashString
()
+
",fileName="
+
fileName
+
",timestamp="
+
DATE_CONVERTER
.
toString
(
timestamp
)
+
",usages="
+
new
TreeMap
<
String
,
RangeSet
>(
usages
)
+
",facets="
+
facets
+
"]"
;
...
...
core/src/main/java/hudson/model/FingerprintCleanupThread.java
浏览文件 @
89a11462
...
...
@@ -100,7 +100,7 @@ public final class FingerprintCleanupThread extends AsyncPeriodicWork {
private
boolean
check
(
File
fingerprintFile
)
{
try
{
Fingerprint
fp
=
Fingerprint
.
load
(
fingerprintFile
);
if
(
!
fp
.
isAlive
())
{
if
(
fp
==
null
||
!
fp
.
isAlive
())
{
fingerprintFile
.
delete
();
return
true
;
}
else
{
...
...
core/src/test/java/hudson/model/FingerprintTest.java
浏览文件 @
89a11462
...
...
@@ -220,7 +220,7 @@ public class FingerprintTest {
}
@Test
public
void
roundTrip
()
throws
Exception
{
Fingerprint
f
=
new
Fingerprint
(
new
Fingerprint
.
BuildPtr
(
"foo"
,
13
),
"stuff.jar"
,
SOME_MD5
);
Fingerprint
f
=
new
Fingerprint
(
new
Fingerprint
.
BuildPtr
(
"foo"
,
13
),
"stuff
&more
.jar"
,
SOME_MD5
);
f
.
addWithoutSaving
(
"some"
,
1
);
f
.
addWithoutSaving
(
"some"
,
2
);
f
.
addWithoutSaving
(
"some"
,
3
);
...
...
@@ -229,6 +229,7 @@ public class FingerprintTest {
File
xml
=
new
File
(
new
File
(
tmp
.
getRoot
(),
"dir"
),
"fp.xml"
);
f
.
save
(
xml
);
Fingerprint
f2
=
Fingerprint
.
load
(
xml
);
assertNotNull
(
f2
);
assertEquals
(
f
.
toString
(),
f2
.
toString
());
f
.
facets
.
setOwner
(
Saveable
.
NOOP
);
f
.
facets
.
add
(
new
TestFacet
(
f
,
123
,
"val"
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录