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.

Reply via email to