Skip to content
Permalink
Browse files
[FIXED JENKINS-9367] persistence problem in View$PropertyList
  • Loading branch information
kohsuke committed Apr 20, 2011
1 parent f861c42 commit e23068808a645af7660240287654f4dbe3152fe8
Showing with 28 additions and 8 deletions.
  1. +2 −1 core/src/main/java/hudson/model/ListView.java
  2. +16 −7 core/src/main/java/hudson/model/View.java
  3. +10 −0 test/src/test/java/hudson/model/ViewTest.java
@@ -91,7 +91,8 @@ public ListView(String name, ViewGroup owner) {
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 @@ protected View(String name, ViewGroup owner) {
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 static View create(StaplerRequest req, StaplerResponse rsp, ViewGroup own
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 void testDeleteView() throws Exception {
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());
}
}

0 comments on commit e230688

Please sign in to comment.