Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FIY695
jenkins
提交
af0b6f8a
J
jenkins
项目概览
FIY695
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
af0b6f8a
编写于
12月 27, 2011
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
using newer stapler to play with better scripting language support
上级
1937f427
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
42 addition
and
27 deletion
+42
-27
core/pom.xml
core/pom.xml
+1
-1
core/src/main/java/hudson/model/Descriptor.java
core/src/main/java/hudson/model/Descriptor.java
+41
-26
未找到文件。
core/pom.xml
浏览文件 @
af0b6f8a
...
...
@@ -42,7 +42,7 @@ THE SOFTWARE.
<properties>
<staplerFork>
true
</staplerFork>
<stapler.version>
1.17
6
</stapler.version>
<stapler.version>
1.17
7-SNAPSHOT
</stapler.version>
</properties>
<dependencies>
...
...
core/src/main/java/hudson/model/Descriptor.java
浏览文件 @
af0b6f8a
...
...
@@ -37,6 +37,7 @@ import net.sf.json.JSONArray;
import
net.sf.json.JSONObject
;
import
org.kohsuke.stapler.*
;
import
org.kohsuke.stapler.jelly.JellyCompatibleFacet
;
import
org.kohsuke.stapler.lang.Klass
;
import
org.springframework.util.StringUtils
;
import
org.jvnet.tiger_types.Types
;
import
org.apache.commons.io.IOUtils
;
...
...
@@ -48,6 +49,7 @@ import javax.servlet.RequestDispatcher;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.LinkedHashMap
;
...
...
@@ -579,6 +581,15 @@ public abstract class Descriptor<T extends Describable<T>> implements Saveable {
return
t
;
}
/**
* Returns the {@link Klass} object used for the purpose of loading resources from this descriptor.
*
* This hook enables other JVM languages to provide more integrated lookup.
*/
public
Klass
<?>
getKlass
()
{
return
Klass
.
java
(
clazz
);
}
/**
* Returns the resource path to the help screen HTML, if any.
*
...
...
@@ -608,10 +619,14 @@ public abstract class Descriptor<T extends Describable<T>> implements Saveable {
* locale variations.
*/
public
String
getHelpFile
(
final
String
fieldName
)
{
return
getHelpFile
(
getKlass
(),
fieldName
);
}
public
String
getHelpFile
(
Klass
<?>
clazz
,
String
fieldName
)
{
String
v
=
helpRedirect
.
get
(
fieldName
);
if
(
v
!=
null
)
return
v
;
for
(
Class
c
=
clazz
;
c
!=
null
;
c
=
c
.
getSuperclas
s
())
{
for
(
Klass
<?>
c
:
clazz
.
getAncestor
s
())
{
String
page
=
"/descriptor/"
+
getId
()
+
"/help"
;
String
suffix
;
if
(
fieldName
==
null
)
{
...
...
@@ -628,13 +643,11 @@ public abstract class Descriptor<T extends Describable<T>> implements Saveable {
throw
new
Error
(
e
);
}
InputStream
in
=
getHelpStream
(
c
,
suffix
);
IOUtils
.
closeQuietly
(
in
);
if
(
in
!=
null
)
return
page
;
if
(
getStaticHelpUrl
(
c
,
suffix
)
!=
null
)
return
page
;
}
return
null
;
}
/**
* Tells Jenkins that the help file for the field 'fieldName' is defined in the help file for
* the 'fieldNameToRedirectTo' in the 'owner' class.
...
...
@@ -775,43 +788,45 @@ public abstract class Descriptor<T extends Describable<T>> implements Saveable {
path
=
path
.
replace
(
'/'
,
'-'
);
for
(
Class
c
=
clazz
;
c
!=
null
;
c
=
c
.
getSuperc
lass
())
{
for
(
Klass
<?>
c
=
getKlass
();
c
!=
null
;
c
=
c
.
getSuperC
lass
())
{
RequestDispatcher
rd
=
Stapler
.
getCurrentRequest
().
getView
(
c
,
"help"
+
path
);
if
(
rd
!=
null
)
{
//
Jelly-generat
ed help page
if
(
rd
!=
null
)
{
//
template bas
ed help page
rd
.
forward
(
req
,
rsp
);
return
;
}
InputStream
in
=
getHelpStream
(
c
,
path
);
if
(
in
!=
null
)
{
URL
url
=
getStaticHelpUrl
(
c
,
path
);
if
(
url
!=
null
)
{
// TODO: generalize macro expansion and perhaps even support JEXL
rsp
.
setContentType
(
"text/html;charset=UTF-8"
);
String
literal
=
IOUtils
.
toString
(
in
,
"UTF-8"
);
rsp
.
getWriter
().
println
(
Util
.
replaceMacro
(
literal
,
Collections
.
singletonMap
(
"rootURL"
,
req
.
getContextPath
())));
in
.
close
();
InputStream
in
=
url
.
openStream
();
try
{
String
literal
=
IOUtils
.
toString
(
in
,
"UTF-8"
);
rsp
.
getWriter
().
println
(
Util
.
replaceMacro
(
literal
,
Collections
.
singletonMap
(
"rootURL"
,
req
.
getContextPath
())));
}
finally
{
IOUtils
.
closeQuietly
(
in
);
}
return
;
}
}
rsp
.
sendError
(
SC_NOT_FOUND
);
}
private
InputStream
getHelpStream
(
Class
c
,
String
suffix
)
{
private
URL
getStaticHelpUrl
(
Klass
<?>
c
,
String
suffix
)
{
Locale
locale
=
Stapler
.
getCurrentRequest
().
getLocale
();
String
base
=
c
.
getName
().
replace
(
'.'
,
'/'
).
replace
(
'$'
,
'/'
)
+
"/help"
+
suffix
;
ClassLoader
cl
=
c
.
getClassLoader
();
if
(
cl
==
null
)
return
null
;
InputStream
in
;
in
=
cl
.
getResourceAsStream
(
base
+
'_'
+
locale
.
getLanguage
()
+
'_'
+
locale
.
getCountry
()
+
'_'
+
locale
.
getVariant
()
+
".html"
);
if
(
in
!=
null
)
return
in
;
in
=
cl
.
getResourceAsStream
(
base
+
'_'
+
locale
.
getLanguage
()
+
'_'
+
locale
.
getCountry
()
+
".html"
);
if
(
in
!=
null
)
return
in
;
in
=
cl
.
getResourceAsStream
(
base
+
'_'
+
locale
.
getLanguage
()
+
".html"
);
if
(
in
!=
null
)
return
in
;
String
base
=
"help"
+
suffix
;
URL
url
;
url
=
c
.
getResource
(
base
+
'_'
+
locale
.
getLanguage
()
+
'_'
+
locale
.
getCountry
()
+
'_'
+
locale
.
getVariant
()
+
".html"
);
if
(
url
!=
null
)
return
url
;
url
=
c
.
getResource
(
base
+
'_'
+
locale
.
getLanguage
()
+
'_'
+
locale
.
getCountry
()
+
".html"
);
if
(
url
!=
null
)
return
url
;
url
=
c
.
getResource
(
base
+
'_'
+
locale
.
getLanguage
()
+
".html"
);
if
(
url
!=
null
)
return
url
;
// default
return
c
l
.
getResourceAsStream
(
base
+
".html"
);
return
c
.
getResource
(
base
+
".html"
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录