提交 5b149df1 编写于 作者: K Kohsuke Kawaguchi

split off Plugin.configure() integration into GlobalConfiguration pluggability point

上级 e78e3485
package jenkins.model;
import hudson.Extension;
import hudson.Plugin;
import hudson.StructuredForm;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.StaplerRequest;
import javax.servlet.ServletException;
import java.io.IOException;
/**
* Include config.jelly defined for {@link Plugin}s.
*
* <p>
* This object just acts as a proxy to configure {@link Jenkins#clouds}
*
* @author Kohsuke Kawaguchi
*/
@Extension(ordinal=100) // historically this was placed above general configuration from arbitrary descriptors
public class GlobalPluginConfiguration extends GlobalConfiguration {
@Override
public boolean configure(StaplerRequest req, JSONObject json) throws FormException {
try {
for( JSONObject o : StructuredForm.toList(json, "plugin"))
Jenkins.getInstance().pluginManager.getPlugin(o.getString("name")).getPlugin().configure(req, o);
return true;
} catch (IOException e) {
throw new FormException(e,"plugin");
} catch (ServletException e) {
throw new FormException(e,"plugin");
}
}
}
......@@ -2516,9 +2516,6 @@ public class Jenkins extends AbstractCIBase implements ModifiableItemGroup<TopLe
for( Descriptor<?> d : Functions.getSortedDescriptorsForGlobalConfig() )
result &= configureDescriptor(req,json,d);
for( JSONObject o : StructuredForm.toList(json,"plugin"))
pluginManager.getPlugin(o.getString("name")).getPlugin().configure(req, o);
JSONObject np = json.getJSONObject("globalNodeProperties");
if (!np.isNullObject()) {
globalNodeProperties.rebuild(req, np, NodeProperty.for_(this));
......
package jenkins.model.GlobalPluginConfiguration
import hudson.Functions
def f=namespace(lib.FormTagLib)
// list config pages from plugins, if any
app.pluginManager.plugins.each { p ->
if (Functions.hasView(p.plugin,"config.jelly")) {
f.rowSet(name:"plugin") {
f.invisibleEntry {
input (type:"hidden", name:"name", value:p.shortName)
}
include(p.plugin, "config")
}
}
}
......@@ -166,18 +166,6 @@ THE SOFTWARE.
descriptors="${h.getNodePropertyDescriptors(it.class)}"
instances="${it.globalNodeProperties}" />
<!-- list config pages from plugins, if any -->
<j:forEach var="p" items="${it.pluginManager.plugins}">
<j:if test="${h.hasView(p.plugin,'config.jelly')}">
<f:rowSet name="plugin">
<f:invisibleEntry>
<input type="hidden" name="name" value="${p.shortName}"/>
</f:invisibleEntry>
<st:include page="config.jelly" it="${p.plugin}" optional="true"/>
</f:rowSet>
</j:if>
</j:forEach>
<!-- global configuration from everyone -->
<j:forEach var="descriptor" items="${h.getSortedDescriptorsForGlobalConfig()}">
<j:set var="instance" value="${descriptor}" /><!-- this makes the <f:textbox field=.../> work -->
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册