You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org> on 2007/06/27 00:43:26 UTC

[jira] Created: (TOMAHAWK-1035) preserveDataModel=true throws ClassCastException (with Trinidad)

preserveDataModel=true throws ClassCastException (with Trinidad)
----------------------------------------------------------------

                 Key: TOMAHAWK-1035
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1035
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Extended Datatable
         Environment: jboss-4.2.0.GA, windows XP
            Reporter: Leonardo Uribe


When you have a datatable with preserveDataModel=true, it throws ClassClastException when you use commandSortHeader and try to sort
the data (click it twice).

I believe that the problem is that trinidad use a cache mechanism in its StateManager implementation. When you load first, it works well, but
when I click the sort header, throws the error, In the navigator, if I click back, and try again the error is not thrown.

The component assume that the method restoreState is called(and the Serialized model is restored) when there is a request, but this is not 
true for trinidad StateManager Impl (If the tree exists trinidad takes it). 

Solution: instead this line in method saveState of class org.apache.myfaces.component.html.ext.HtmlDataTable
        
        if (isPreserveDataModel())
        {
               values[2] = saveAttachedState(context, getSerializableDataModel());
        }

add these lines

        if (isPreserveDataModel())
        {
        	_preservedDataModel = getSerializableDataModel();
            values[2] = saveAttachedState(context, _preservedDataModel);
        }

It's the same but note that when the method getDataModel() is called again, it checks _preservedDataModel, and
the model is restored. 

I have probe this with and without trinidad (using myfaces tomahawk examples simple project) and works 
without problems

I found a similar issue to this in TOMAHAWK-241, but in this issue I have not found anything about the environment
when the error is thrown.





-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TOMAHAWK-1035) preserveDataModel=true throws ClassCastException (with Trinidad)

Posted by "Grant Smith (JIRA)" <de...@myfaces.apache.org>.
     [ https://issues.apache.org/jira/browse/TOMAHAWK-1035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Grant Smith updated TOMAHAWK-1035:
----------------------------------

       Resolution: Fixed
    Fix Version/s: 1.1.7-SNAPSHOT
           Status: Resolved  (was: Patch Available)

Patch applied. Thanks Leonardo.

> preserveDataModel=true throws ClassCastException (with Trinidad)
> ----------------------------------------------------------------
>
>                 Key: TOMAHAWK-1035
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1035
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Extended Datatable
>         Environment: jboss-4.2.0.GA, windows XP
>            Reporter: Leonardo Uribe
>            Assignee: Grant Smith
>             Fix For: 1.1.7-SNAPSHOT
>
>         Attachments: patch3.patch
>
>
> When you have a datatable with preserveDataModel=true, it throws ClassClastException when you use commandSortHeader and try to sort
> the data (click it twice).
> I believe that the problem is that trinidad use a cache mechanism in its StateManager implementation. When you load first, it works well, but
> when I click the sort header, throws the error, In the navigator, if I click back, and try again the error is not thrown.
> The component assume that the method restoreState is called(and the Serialized model is restored) when there is a request, but this is not 
> true for trinidad StateManager Impl (If the tree exists trinidad takes it). 
> Solution: instead this line in method saveState of class org.apache.myfaces.component.html.ext.HtmlDataTable
>         
>         if (isPreserveDataModel())
>         {
>                values[2] = saveAttachedState(context, getSerializableDataModel());
>         }
> add these lines
>         if (isPreserveDataModel())
>         {
>         	_preservedDataModel = getSerializableDataModel();
>             values[2] = saveAttachedState(context, _preservedDataModel);
>         }
> It's the same but note that when the method getDataModel() is called again, it checks _preservedDataModel, and
> the model is restored. 
> I have probe this with and without trinidad (using myfaces tomahawk examples simple project) and works 
> without problems
> I found a similar issue to this in TOMAHAWK-241, but in this issue I have not found anything about the environment
> when the error is thrown.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TOMAHAWK-1035) preserveDataModel=true throws ClassCastException (with Trinidad)

Posted by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org>.
     [ https://issues.apache.org/jira/browse/TOMAHAWK-1035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leonardo Uribe updated TOMAHAWK-1035:
-------------------------------------

    Status: Patch Available  (was: Open)

> preserveDataModel=true throws ClassCastException (with Trinidad)
> ----------------------------------------------------------------
>
>                 Key: TOMAHAWK-1035
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1035
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Extended Datatable
>         Environment: jboss-4.2.0.GA, windows XP
>            Reporter: Leonardo Uribe
>         Attachments: patch3.patch
>
>
> When you have a datatable with preserveDataModel=true, it throws ClassClastException when you use commandSortHeader and try to sort
> the data (click it twice).
> I believe that the problem is that trinidad use a cache mechanism in its StateManager implementation. When you load first, it works well, but
> when I click the sort header, throws the error, In the navigator, if I click back, and try again the error is not thrown.
> The component assume that the method restoreState is called(and the Serialized model is restored) when there is a request, but this is not 
> true for trinidad StateManager Impl (If the tree exists trinidad takes it). 
> Solution: instead this line in method saveState of class org.apache.myfaces.component.html.ext.HtmlDataTable
>         
>         if (isPreserveDataModel())
>         {
>                values[2] = saveAttachedState(context, getSerializableDataModel());
>         }
> add these lines
>         if (isPreserveDataModel())
>         {
>         	_preservedDataModel = getSerializableDataModel();
>             values[2] = saveAttachedState(context, _preservedDataModel);
>         }
> It's the same but note that when the method getDataModel() is called again, it checks _preservedDataModel, and
> the model is restored. 
> I have probe this with and without trinidad (using myfaces tomahawk examples simple project) and works 
> without problems
> I found a similar issue to this in TOMAHAWK-241, but in this issue I have not found anything about the environment
> when the error is thrown.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.