提交 36fca6c4 编写于 作者: K kohsuke

modified to display information about failed plugins.


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@1944 71c3de6d-444a-0410-be80-ed276b4c234a
上级 eb234046
......@@ -7,6 +7,8 @@ import javax.servlet.ServletContext;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.StringWriter;
import java.io.PrintWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
......@@ -32,6 +34,8 @@ public final class PluginManager {
*/
private final List<PluginWrapper> activePlugins = new ArrayList<PluginWrapper>();
private final List<FailedPlugin> failedPlugins = new ArrayList<FailedPlugin>();
/**
* Plug-in root directory.
*/
......@@ -72,6 +76,7 @@ public final class PluginManager {
if(p.isActive())
activePlugins.add(p);
} catch (IOException e) {
failedPlugins.add(new FailedPlugin(arc.getName(),e));
LOGGER.log(Level.SEVERE, "Failed to load a plug-in " + arc, e);
}
}
......@@ -81,6 +86,10 @@ public final class PluginManager {
return plugins;
}
public List<FailedPlugin> getFailedPlugins() {
return failedPlugins;
}
public PluginWrapper getPlugin(String shortName) {
for (PluginWrapper p : plugins) {
if(p.getShortName().equals(shortName))
......@@ -153,4 +162,22 @@ public final class PluginManager {
private static final Logger LOGGER = Logger.getLogger(PluginManager.class.getName());
/**
* Remembers why a plugin failed to deploy.
*/
public static final class FailedPlugin {
public final String name;
public final IOException cause;
public FailedPlugin(String name, IOException cause) {
this.name = name;
this.cause = cause;
}
public String getExceptionString() {
StringWriter sw = new StringWriter();
cause.printStackTrace(new PrintWriter(sw));
return sw.toString();
}
}
}
......@@ -14,7 +14,7 @@
</div>
</div>
<j:choose>
<j:when test="${empty(it.pluginManager.plugins)}">
<j:when test="${empty(it.pluginManager.plugins) &amp;&amp; empty(it.pluginManager.failedPlugins)}">
No plugins installed.
</j:when>
<j:otherwise>
......@@ -38,6 +38,17 @@
</td>
</tr>
</j:forEach>
<!-- failed ones -->
<j:forEach var="p" items="${it.pluginManager.failedPlugins}">
<tr class="hoverback">
<td class="plugin-description">
<h4 class="error">Failed : ${p.name}</h4>
<div stlyle="padding-left: 1em">
<pre>${p.exceptionString}</pre>
</div>
</td>
</tr>
</j:forEach>
</table>
</j:otherwise>
</j:choose>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册