提交 dfc2fe38 编写于 作者: K Kohsuke Kawaguchi

[FIXED JENKINS-9367] persistence problem in View$PropertyList

上级 eb7292e1
......@@ -55,7 +55,9 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
<ul class=image>
<li class=>
<li class=bug>
Fixed a persistence problem in <tt>View$PropertyList</tt>
(<a href="http://issues.jenkins-ci.org/browse/JENKINS-9367">issue 9367</a>)
</ul>
</div><!--=TRUNK-END=-->
......
......@@ -91,7 +91,8 @@ public class ListView extends View implements Saveable {
this.owner = owner;
}
private Object readResolve() {
protected Object readResolve() {
super.readResolve();
if(includeRegex!=null)
includePattern = Pattern.compile(includeRegex);
initColumns();
......
......@@ -118,7 +118,7 @@ public abstract class View extends AbstractModelObject implements AccessControll
* List of {@link ViewProperty}s configured for this view.
* @since 1.406
*/
private volatile DescribableList<ViewProperty,ViewPropertyDescriptor> properties = new PropertyList();
private volatile DescribableList<ViewProperty,ViewPropertyDescriptor> properties = new PropertyList(this);
protected View(String name) {
this.name = name;
......@@ -129,9 +129,11 @@ public abstract class View extends AbstractModelObject implements AccessControll
this.owner = owner;
}
private Object readResolve() {
protected Object readResolve() {
if (properties == null) {
properties = new PropertyList();
properties = new PropertyList(this);
} else {
properties.setOwner(this);
}
return this;
}
......@@ -762,15 +764,22 @@ public abstract class View extends AbstractModelObject implements AccessControll
return v;
}
private class PropertyList extends DescribableList<ViewProperty,ViewPropertyDescriptor> {
private PropertyList() {
super(View.this);
public static class PropertyList extends DescribableList<ViewProperty,ViewPropertyDescriptor> {
private PropertyList(View owner) {
super(owner);
}
public PropertyList() {// needed for XStream deserialization
}
public View getOwner() {
return (View)owner;
}
@Override
protected void onModified() throws IOException {
for (ViewProperty p : this)
p.setView(View.this);
p.setView(getOwner());
}
}
}
......@@ -118,4 +118,14 @@ public class ViewTest extends HudsonTestCase {
assertNull(p.getView("list"));
}
@Bug(9367)
public void testPersistence() throws Exception {
ListView view = new ListView("foo", hudson);
hudson.addView(view);
ListView v = (ListView)Hudson.XSTREAM.fromXML(Hudson.XSTREAM.toXML(view));
System.out.println(v.getProperties());
assertNotNull(v.getProperties());
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册