Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.7DR#2
-
Component/s: Framework
-
Labels:None
-
Environment:win xp
-
Support Case References:
Description
If a user tries to call renderer.remove() after the Renderable has already been removed the remove method will generate an NPE:
ava.lang.NullPointerException
at
com.icesoft.faces.async.render.GroupAsyncRenderer.remove(GroupAsyncRenderer.java:127)
at
com.efunds.oe.fm.pb.AbstractRenderableBean.removePolling(AbstractRenderableBean.java:117)
at
com.efunds.oe.fm.pb.AbstractRenderableBean.viewDisposed(AbstractRenderableBean.java:210)
at com.icesoft.faces.context.View.notifyViewDisposal(View.java:221)
at com.icesoft.faces.context.View.dispose(View.java:191)
...
suggested fix:
public void remove(Renderable renderable) {
if( group != null ){
synchronized (group) {
Iterator iter = group.iterator();
while (iter.hasNext()) {
WeakReference ref = (WeakReference) iter.next();
if (renderable == (Renderable) ref.get()) {
group.remove(ref);
if (log.isTraceEnabled()) {
log.trace(name + " removing " + renderable);
}
return;
}
}
if (log.isWarnEnabled()) {
log.warn(name + " does not contain " + renderable);
}
}
}
}
ava.lang.NullPointerException
at
com.icesoft.faces.async.render.GroupAsyncRenderer.remove(GroupAsyncRenderer.java:127)
at
com.efunds.oe.fm.pb.AbstractRenderableBean.removePolling(AbstractRenderableBean.java:117)
at
com.efunds.oe.fm.pb.AbstractRenderableBean.viewDisposed(AbstractRenderableBean.java:210)
at com.icesoft.faces.context.View.notifyViewDisposal(View.java:221)
at com.icesoft.faces.context.View.dispose(View.java:191)
...
suggested fix:
public void remove(Renderable renderable) {
if( group != null ){
synchronized (group) {
Iterator iter = group.iterator();
while (iter.hasNext()) {
WeakReference ref = (WeakReference) iter.next();
if (renderable == (Renderable) ref.get()) {
group.remove(ref);
if (log.isTraceEnabled()) {
log.trace(name + " removing " + renderable);
}
return;
}
}
if (log.isWarnEnabled()) {
log.warn(name + " does not contain " + renderable);
}
}
}
}
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion