Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
roginluo
Jenkins
提交
a5bede84
J
Jenkins
项目概览
roginluo
/
Jenkins
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
Jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a5bede84
编写于
3月 28, 2016
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2176 from jenkinsci/instance-initializer
initializer annotation on instance methods
上级
2ed09051
17770699
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
35 addition
and
19 deletion
+35
-19
core/src/main/java/hudson/diagnosis/NullIdDescriptorMonitor.java
...c/main/java/hudson/diagnosis/NullIdDescriptorMonitor.java
+2
-6
core/src/main/java/hudson/init/Initializer.java
core/src/main/java/hudson/init/Initializer.java
+7
-1
core/src/main/java/hudson/init/TaskMethodFinder.java
core/src/main/java/hudson/init/TaskMethodFinder.java
+5
-5
core/src/main/java/hudson/init/Terminator.java
core/src/main/java/hudson/init/Terminator.java
+2
-0
core/src/main/java/jenkins/model/Jenkins.java
core/src/main/java/jenkins/model/Jenkins.java
+5
-0
core/src/main/java/jenkins/model/Uptime.java
core/src/main/java/jenkins/model/Uptime.java
+2
-2
core/src/main/java/jenkins/security/RekeySecretAdminMonitor.java
...c/main/java/jenkins/security/RekeySecretAdminMonitor.java
+3
-5
core/src/main/java/jenkins/slaves/NioChannelSelector.java
core/src/main/java/jenkins/slaves/NioChannelSelector.java
+9
-0
未找到文件。
core/src/main/java/hudson/diagnosis/NullIdDescriptorMonitor.java
浏览文件 @
a5bede84
...
...
@@ -60,7 +60,8 @@ public class NullIdDescriptorMonitor extends AdministrativeMonitor {
return
Collections
.
unmodifiableList
(
problems
);
}
private
void
verify
()
{
@Initializer
(
after
=
EXTENSIONS_AUGMENTED
)
public
void
verify
()
{
Jenkins
h
=
Jenkins
.
getInstance
();
for
(
Descriptor
d
:
h
.
getExtensionList
(
Descriptor
.
class
))
{
PluginWrapper
p
=
h
.
getPluginManager
().
whichPlugin
(
d
.
getClass
());
...
...
@@ -81,10 +82,5 @@ public class NullIdDescriptorMonitor extends AdministrativeMonitor {
}
}
@Initializer
(
after
=
EXTENSIONS_AUGMENTED
)
public
static
void
verifyId
()
{
AdministrativeMonitor
.
all
().
get
(
NullIdDescriptorMonitor
.
class
).
verify
();
}
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
NullIdDescriptorMonitor
.
class
.
getName
());
}
core/src/main/java/hudson/init/Initializer.java
浏览文件 @
a5bede84
...
...
@@ -23,6 +23,7 @@
*/
package
hudson.init
;
import
hudson.Extension
;
import
org.jvnet.hudson.annotation_indexer.Indexed
;
import
org.jvnet.hudson.reactor.Task
;
...
...
@@ -36,7 +37,7 @@ import static hudson.init.InitMilestone.STARTED;
import
static
hudson
.
init
.
InitMilestone
.
COMPLETED
;
/**
* Placed on
static
methods to indicate that this method is to be run during the Jenkins start up to perform
* Placed on methods to indicate that this method is to be run during the Jenkins start up to perform
* some sort of initialization tasks.
*
* <h3>Example</h3>
...
...
@@ -46,6 +47,11 @@ import static hudson.init.InitMilestone.COMPLETED;
....
}
* </pre>
*
* <p>
* The method in question can be either {@code static} or an instance method. When used with instance
* methods, those methods have to be on a class annotated with {@link Extension} and marked as
* {@link #after()} {@link InitMilestone#PLUGINS_PREPARED}.
*
* @author Kohsuke Kawaguchi
*/
...
...
core/src/main/java/hudson/init/TaskMethodFinder.java
浏览文件 @
a5bede84
...
...
@@ -56,9 +56,6 @@ abstract class TaskMethodFinder<T extends Annotation> extends TaskBuilder {
for
(
Method
e
:
Index
.
list
(
type
,
cl
,
Method
.
class
))
{
if
(
filter
(
e
))
continue
;
// already reported once
if
(!
Modifier
.
isStatic
(
e
.
getModifiers
()))
throw
new
IOException
(
e
+
" is not a static method"
);
T
i
=
e
.
getAnnotation
(
type
);
if
(
i
==
null
)
continue
;
// stale index
...
...
@@ -103,7 +100,10 @@ abstract class TaskMethodFinder<T extends Annotation> extends TaskBuilder {
Object
[]
args
=
new
Object
[
pt
.
length
];
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++)
args
[
i
]
=
lookUp
(
pt
[
i
]);
e
.
invoke
(
null
,
args
);
e
.
invoke
(
Modifier
.
isStatic
(
e
.
getModifiers
())
?
null
:
lookUp
(
e
.
getDeclaringClass
()),
args
);
}
catch
(
IllegalAccessException
x
)
{
throw
(
Error
)
new
IllegalAccessError
().
initCause
(
x
);
}
catch
(
InvocationTargetException
x
)
{
...
...
@@ -149,7 +149,7 @@ abstract class TaskMethodFinder<T extends Annotation> extends TaskBuilder {
}
/**
*
Static m
ethod that runs the initialization, that this task wraps.
*
M
ethod that runs the initialization, that this task wraps.
*/
public
Method
getMethod
()
{
return
e
;
...
...
core/src/main/java/hudson/init/Terminator.java
浏览文件 @
a5bede84
...
...
@@ -11,6 +11,8 @@ import static java.lang.annotation.ElementType.METHOD;
import
static
java
.
lang
.
annotation
.
RetentionPolicy
.
RUNTIME
;
/**
* Like {@link Initializer} but used during the shut down.
*
* @author Kohsuke Kawaguchi
*/
@Indexed
...
...
core/src/main/java/jenkins/model/Jenkins.java
浏览文件 @
a5bede84
...
...
@@ -970,6 +970,11 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
@Override
protected
void
onInitMilestoneAttained
(
InitMilestone
milestone
)
{
initLevel
=
milestone
;
if
(
milestone
==
PLUGINS_PREPARED
)
{
// set up Guice to enable injection as early as possible
// before this milestone, ExtensionList.ensureLoaded() won't actually try to locate instances
ExtensionList
.
lookup
(
ExtensionFinder
.
class
).
getComponents
();
}
}
}.
run
(
reactor
);
}
...
...
core/src/main/java/jenkins/model/Uptime.java
浏览文件 @
a5bede84
...
...
@@ -27,7 +27,7 @@ public class Uptime {
}
@Initializer
(
after
=
InitMilestone
.
JOB_LOADED
)
public
static
void
init
()
{
ExtensionList
.
lookup
(
Uptime
.
class
).
get
(
0
).
startTime
=
System
.
currentTimeMillis
();
public
void
init
()
{
startTime
=
System
.
currentTimeMillis
();
}
}
core/src/main/java/jenkins/security/RekeySecretAdminMonitor.java
浏览文件 @
a5bede84
...
...
@@ -113,13 +113,11 @@ public class RekeySecretAdminMonitor extends AsynchronousAdministrativeMonitor i
@Initializer
(
fatal
=
false
,
after
=
InitMilestone
.
PLUGINS_STARTED
,
before
=
InitMilestone
.
EXTENSIONS_AUGMENTED
)
// as early as possible, but this needs to be late enough that the ConfidentialStore is available
public
static
void
scanOnReboot
()
throws
InterruptedException
,
IOException
,
GeneralSecurityException
{
RekeySecretAdminMonitor
m
=
new
RekeySecretAdminMonitor
();
// throw-away instance
FileBoolean
flag
=
m
.
scanOnBoot
;
public
void
scanOnReboot
()
throws
InterruptedException
,
IOException
,
GeneralSecurityException
{
FileBoolean
flag
=
scanOnBoot
;
if
(
flag
.
isOn
())
{
flag
.
off
();
m
.
start
(
false
).
join
();
start
(
false
).
join
();
// block the boot until the rewrite process is complete
// don't let the failure in RekeyThread block Jenkins boot.
}
...
...
core/src/main/java/jenkins/slaves/NioChannelSelector.java
浏览文件 @
a5bede84
package
jenkins.slaves
;
import
hudson.Extension
;
import
hudson.init.Terminator
;
import
hudson.model.Computer
;
import
org.jenkinsci.remoting.nio.NioChannelHub
;
...
...
@@ -34,6 +35,14 @@ public class NioChannelSelector {
return
hub
;
}
@Terminator
public
void
cleanUp
()
throws
IOException
{
if
(
hub
!=
null
)
{
hub
.
close
();
hub
=
null
;
}
}
/**
* Escape hatch to disable use of NIO.
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录