提交 97148a1b 编写于 作者: JenkinsInChina's avatar JenkinsInChina

Add plugin monitor

上级 f7ac95b4
......@@ -62,6 +62,14 @@
</resources>
</build>
<dependencies>
<dependency>
<groupId>org.jenkins-ci</groupId>
<artifactId>symbol-annotation</artifactId>
<version>1.14</version>
</dependency>
</dependencies>
<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
......
package jenkins.plugins.localization;
import hudson.PluginWrapper;
import hudson.util.HttpResponses;
import jenkins.model.Jenkins;
import org.jenkinsci.Symbol;
import hudson.Extension;
import hudson.model.AdministrativeMonitor;
import org.kohsuke.stapler.HttpResponse;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.WebApp;
import org.kohsuke.stapler.interceptor.RequirePOST;
import org.kohsuke.stapler.jelly.JellyFacet;
import org.kohsuke.stapler.jelly.ResourceBundleFactory;
import java.io.IOException;
import java.lang.reflect.Method;
@Extension
@Symbol("ChineseLocalization")
public class LocalizationMonitor extends AdministrativeMonitor {
private PluginWrapper plugin;
public LocalizationMonitor() {
super("ChineseLocalization");
}
@Override
public boolean isActivated() {
Jenkins jenkins = Jenkins.getInstance();
if(jenkins == null) {
return false;
}
WebApp webContext = WebApp.get(jenkins.servletContext);
JellyFacet facet = webContext.getFacet(JellyFacet.class);
ResourceBundleFactory factory = facet.resourceBundleFactory;
Class<?> factoryClazz = factory.getClass();
plugin = jenkins.getPluginManager().whichPlugin(factoryClazz);
return !isOk(factory, factoryClazz);
}
private boolean isOk(Object obj, Class<?> clazz) {
try {
Method method = clazz.getMethod("getParentFactory");
if(method != null) {
Object result = method.invoke(obj);
if(result.getClass().equals(ResourceBundleFactoryImpl.class)) {
return true;
} else if(result instanceof ResourceBundleFactory){
return isOk(result, obj.getClass().getSuperclass());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@RequirePOST
public HttpResponse doAct(StaplerRequest req, StaplerResponse rsp) throws IOException {
if (req.hasParameter("no")) {
disable(true);
return HttpResponses.redirectViaContextPath("/manage");
} else {
return HttpResponses.redirectViaContextPath("/configure");
}
}
public PluginWrapper getPlugin() {
return plugin;
}
}
......@@ -109,6 +109,10 @@ final class ResourceBundleFactoryImpl extends ResourceBundleFactory {
};
}
public ResourceBundleFactory getParentFactory() {
return parentFactory;
}
/**
* Used to force the reloading of a cache.
*/
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
<div class="alert alert-warning">
<form method="post" action="${rootURL}/${it.url}/act" name="${it.id}">
<f:submit name="no" value="${%Dismiss}"/>
</form>
${%Chinese Localization is conflict with} <a href="${rootURL}/pluginManager/plugin/${it.plugin.getShortName()}/thirdPartyLicenses">${it.plugin.getDisplayName()}:${it.plugin.getVersion()}</a>
</div>
</j:jelly>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册