AbstractPageableView has transient cachedItemCount, but doesn't set it to -1 on
deserialization.
------------------------------------------------------------------------------------------------
Key: WICKET-1323
URL: https://issues.apache.org/jira/browse/WICKET-1323
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.3.1
Environment: Gentoo Linux / AMD64X2 / Java 6
Reporter: Benjamin Keil
AbstractPageableView declares:
private transient int cachedItemCount;
When this is deserialized, cachedItemCount gets set to 0. This means that the
method isItemCountCached() will return true on a deserialized
AbstractPageableView. This, in turn, causes getCurrentPage() to return 0, even
when the user is not navigating the first page.
For me, this is causing huge problems with the paging navigator.
My current workaround is this is to add this method to my DataView
implementation:
private Object readResolve() throws ObjectStreamException {
final Class<?> myClass = getClass();
final Class<?> dataView = myClass.getSuperclass();
final Class<?> dataViewBase = dataView.getSuperclass();
final Class<?> abstractPagableView = dataViewBase.getSuperclass();
try {
final Field field;
field = abstractPagableView.getDeclaredField("cachedItemCount");
field.setAccessible(true);
field.setInt(this, -1);
} catch (Exception e) {
throw new RuntimeException(e);
}
return this;
}
Obviously it would be better if the AbstractPagingView could take care of this
itself.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.