Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
野花太放肆
jenkins
提交
5051f144
J
jenkins
项目概览
野花太放肆
/
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,发现更多精彩内容 >>
提交
5051f144
编写于
12月 23, 2011
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added a call path to call CLICommand without requiring a Channel
上级
c1f8fef7
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
27 deletion
+17
-27
core/src/main/java/hudson/cli/CLICommand.java
core/src/main/java/hudson/cli/CLICommand.java
+12
-6
core/src/main/java/hudson/cli/CliManagerImpl.java
core/src/main/java/hudson/cli/CliManagerImpl.java
+5
-21
未找到文件。
core/src/main/java/hudson/cli/CLICommand.java
浏览文件 @
5051f144
...
...
@@ -135,6 +135,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
*/
public
transient
Locale
locale
;
private
transient
Authentication
transportAuth
;
/**
* Gets the command name.
...
...
@@ -170,7 +171,6 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
this
.
stdout
=
stdout
;
this
.
stderr
=
stderr
;
this
.
locale
=
locale
;
this
.
channel
=
Channel
.
current
();
registerOptionHandlers
();
CmdLineParser
p
=
new
CmdLineParser
(
this
);
...
...
@@ -184,7 +184,7 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
try
{
p
.
parseArgument
(
args
.
toArray
(
new
String
[
args
.
size
()]));
Authentication
auth
=
authenticator
.
authenticate
();
if
(
auth
==
Jenkins
.
ANONYMOUS
)
if
(
auth
==
Jenkins
.
ANONYMOUS
)
auth
=
loadStoredAuthentication
();
sc
.
setAuthentication
(
auth
);
// run the CLI with the right credential
if
(!(
this
instanceof
LoginCommand
||
this
instanceof
HelpCommand
))
...
...
@@ -207,16 +207,18 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
}
/**
* Loads the persisted authentication information from {@link ClientAuthenticationCache}.
* Loads the persisted authentication information from {@link ClientAuthenticationCache}
* if the current transport provides {@link Channel}.
*/
protected
Authentication
loadStoredAuthentication
()
throws
InterruptedException
{
try
{
return
new
ClientAuthenticationCache
(
channel
).
get
();
if
(
channel
!=
null
)
return
new
ClientAuthenticationCache
(
channel
).
get
();
}
catch
(
IOException
e
)
{
stderr
.
println
(
"Failed to access the stored credential"
);
e
.
printStackTrace
(
stderr
);
// recover
return
Jenkins
.
ANONYMOUS
;
}
return
Jenkins
.
ANONYMOUS
;
}
/**
...
...
@@ -256,11 +258,15 @@ public abstract class CLICommand implements ExtensionPoint, Cloneable {
* If the transport doesn't do authentication, this method returns {@link jenkins.model.Jenkins#ANONYMOUS}.
*/
public
Authentication
getTransportAuthentication
()
{
Authentication
a
=
channel
.
getProperty
(
TRANSPORT_AUTHENTICATION
);
Authentication
a
=
transportAuth
;
if
(
a
==
null
)
a
=
Jenkins
.
ANONYMOUS
;
return
a
;
}
public
void
setTransportAuth
(
Authentication
transportAuth
)
{
this
.
transportAuth
=
transportAuth
;
}
/**
* Executes the command, and return the exit code.
*
...
...
core/src/main/java/hudson/cli/CliManagerImpl.java
浏览文件 @
5051f144
...
...
@@ -23,36 +23,18 @@
*/
package
hudson.cli
;
import
hudson.model.User
;
import
hudson.remoting.Channel
;
import
hudson.remoting.Pipe
;
import
hudson.util.IOUtils
;
import
jenkins.model.Jenkins
;
import
org.apache.commons.discovery.resource.ClassLoaders
;
import
org.apache.commons.discovery.resource.classes.DiscoverClasses
;
import
org.apache.commons.discovery.resource.names.DiscoverServiceNames
;
import
org.apache.commons.discovery.ResourceNameIterator
;
import
org.apache.commons.discovery.ResourceClassIterator
;
import
org.kohsuke.args4j.spi.OptionHandler
;
import
org.kohsuke.args4j.CmdLineParser
;
import
org.jvnet.tiger_types.Types
;
import
java.io.IOException
;
import
java.security.GeneralSecurityException
;
import
java.security.KeyPair
;
import
java.security.PublicKey
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Collections
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.io.PrintStream
;
import
java.io.Serializable
;
import
java.util.logging.Level
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.logging.Logger
;
import
static
java
.
util
.
logging
.
Level
.*;
/**
* {@link CliEntryPoint} implementation exposed to the remote CLI.
*
...
...
@@ -77,8 +59,10 @@ public class CliManagerImpl implements CliEntryPoint, Serializable {
String
subCmd
=
args
.
get
(
0
);
CLICommand
cmd
=
CLICommand
.
clone
(
subCmd
);
if
(
cmd
!=
null
)
{
cmd
.
channel
=
Channel
.
current
();
final
CLICommand
old
=
CLICommand
.
setCurrent
(
cmd
);
try
{
cmd
.
setTransportAuth
(
Channel
.
current
().
getProperty
(
CLICommand
.
TRANSPORT_AUTHENTICATION
));
return
cmd
.
main
(
args
.
subList
(
1
,
args
.
size
()),
locale
,
stdin
,
out
,
err
);
}
finally
{
CLICommand
.
setCurrent
(
old
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录