提交 81ebb628 编写于 作者: M Matt Moore

Change Jenkins to use a single consistent data-binding field.

See also: https://github.com/stapler/stapler/pull/39

This commit includes several changes to accomodate the above change in Stapler (moving away from 'stapler-class'), as well as to make Jenkins consistently use this same JSON field (moving away from 'kind').

NOTE: Stapler will continue to accept 'stapler-class' for backwards compatibility, and similarly this plugin will continue to pass 'stapler-class' for plugins that have keyed off of it.
上级 8e0b87c0
......@@ -909,7 +909,7 @@ public abstract class Descriptor<T extends Describable<T>> implements Saveable {
if (formData!=null) {
for (Object o : JSONArray.fromObject(formData)) {
JSONObject jo = (JSONObject)o;
String kind = jo.getString("kind");
String kind = jo.getString("$class");
Descriptor<T> d = find(descriptors, kind);
if (d != null) {
items.add(d.newInstance(req, jo));
......
......@@ -44,7 +44,7 @@ public class GlobalProjectNamingStrategyConfiguration extends GlobalConfiguratio
final JSONObject optJSONObject = json.optJSONObject("useProjectNamingStrategy");
if (optJSONObject != null) {
final JSONObject strategyObject = optJSONObject.getJSONObject("namingStrategy");
final String className = strategyObject.getString("stapler-class");
final String className = strategyObject.getString("$class");
try {
Class clazz = Class.forName(className, true, Jenkins.getInstance().getPluginManager().uberClassLoader);
final ProjectNamingStrategy strategy = (ProjectNamingStrategy) req.bindJSON(clazz, strategyObject);
......
......@@ -57,8 +57,12 @@ THE SOFTWARE.
<j:set var="instance"
value="${it.launcher.descriptor==d ? it.launcher : null}"/>
<f:invisibleEntry>
<!-- Legacy: Remove once plugins have been staged onto $class -->
<input type="hidden" name="stapler-class" value="${d.clazz.name}" />
</f:invisibleEntry>
<f:invisibleEntry>
<input type="hidden" name="$class" value="${d.clazz.name}" />
</f:invisibleEntry>
<st:include from="${d}" page="${d.configPage}" optional="true"/>
</f:dropdownListBlock>
</j:forEach>
......@@ -77,7 +81,9 @@ THE SOFTWARE.
<j:set var="instance"
value="${it.retentionStrategy.descriptor==d ? it.retentionStrategy : null}"/>
<tr><td>
<!-- Legacy: Remove once plugins have been staged onto $class -->
<input type="hidden" name="stapler-class" value="${d.clazz.name}" />
<input type="hidden" name="$class" value="${d.clazz.name}" />
</td></tr>
<st:include from="${d}" page="${d.configPage}" optional="true"/>
</f:dropdownListBlock>
......
......@@ -54,7 +54,11 @@ THE SOFTWARE.
<j:set var="descriptor" value="${d}" />
<j:set var="instance" value="${instance.descriptor==d?instance:null}" />
<f:invisibleEntry>
<!-- Legacy: Remove once plugins have been staged onto $class -->
<input type="hidden" name="stapler-class" value="${descriptor.clazz.name}"/>
</f:invisibleEntry>
<f:invisibleEntry>
<input type="hidden" name="$class" value="${descriptor.clazz.name}"/>
</f:invisibleEntry>
<st:include from="${d}" page="${d.configPage}" optional="true" />
</f:radioBlock>
......
......@@ -52,7 +52,11 @@ THE SOFTWARE.
<!-- sandwich them by markers so that we know what to show/hide -->
<tr class="dropdownList-start rowvg-start">
<j:if test="${!empty(attrs.staplerClass)}">
<td style="display:none"><input type="hidden" name="stapler-class" value="${attrs.staplerClass}"/></td>
<td style="display:none">
<!-- Legacy: Remove once plugins have been staged onto $class -->
<input type="hidden" name="stapler-class" value="${attrs.staplerClass}"/>
<input type="hidden" name="$class" value="${attrs.staplerClass}"/>
</td>
</j:if>
</tr>
<j:choose>
......
......@@ -93,12 +93,13 @@ THE SOFTWARE.
<f:block>
<div align="right">
<!-- Legacy: Remove once plugins have been staged onto $class -->
<input type="hidden" name="stapler-class" value="${descriptor.clazz.name}" />
<input type="hidden" name="$class" value="${descriptor.clazz.name}" />
<f:repeatableDeleteButton value="${attrs.deleteCaption}" />
</div>
</f:block>
</table>
<input type="hidden" name="kind" value="${descriptor.id}" />
</d:tag>
</d:taglib>
......
......@@ -48,9 +48,12 @@ THE SOFTWARE.
<j:set var="instance" value="${currentDescriptor==d?currentInstance:null}" />
<st:include from="${d}" page="${d.configPage}" optional="true" />
<f:invisibleEntry><!-- this tells Stapler which block is for which class -->
<f:invisibleEntry>
<!-- Legacy: Remove once plugins have been staged onto $class -->
<input type="hidden" name="stapler-class" value="${d.clazz.name}" />
<input type="hidden" name="kind" value="${descriptor.id}"/>
</f:invisibleEntry>
<f:invisibleEntry><!-- this tells Stapler which block is for which class -->
<input type="hidden" name="$class" value="${d.clazz.name}" />
</f:invisibleEntry>
</f:radioBlock>
</j:forEach>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册