[ 
https://issues.apache.org/jira/browse/OFBIZ-12016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17427758#comment-17427758
 ] 

Benjamin Jugl commented on OFBIZ-12016:
---------------------------------------

Hello all,

I just had a look at this. The main issue here is, that there is no Caller that 
can handle the Exception. The exception is thrown on a request-redirect and 
thus the error is never handled. 

I had a look at OFBIZ-12216 and the version history and comments are quite 
confusing.

In UtilObject.java (ll.99) the comment states that "DiskFileItem [...] are not 
serializable, so So SafeObjectInputStream::resolveClass return 
ClassNotFoundException"

That is not true, SafeObjectInputStream::resolveClass returns 
ClassCastException.

In the actual version of UtilObject.java, ClassCastException ist not handled, 
but in the first version of OFBIZ-12216s resolution it had been.

I cannot find an explanation anywhere, why it had been removed.

 

Although handling this error would at least solve the hard exception on the 
frontend, this alone is not a sufficial solution.

Since Request-Redirects can not handle DiskFileItems, is anything 
contraindicative for removing them in the redirect 
(RequestHandler::callRedirect) and logging a warning, that it has been removed? 
Or are there other solutions that I am not aware of?

If not, I would provide a patch that does this.

> DiskFileItem as request attribute creates problems
> --------------------------------------------------
>
>                 Key: OFBIZ-12016
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-12016
>             Project: OFBiz
>          Issue Type: Bug
>    Affects Versions: 18.12.01, Trunk
>            Reporter: Sebastian Berg
>            Assignee: Jacques Le Roux
>            Priority: Major
>             Fix For: Upcoming Branch
>
>
> Hi,
> while working on a custom project based on the 18.12.01 version, I noticed a 
> problem with the request handling during a request-redirect-noparam if a 
> DiskFileItem was involved.
> So the situation for me is as follows: during the first request a file is 
> uploaded. I choose a wrong format on purpose, which results in an error 
> respond for that event. Nevertheless the DiskFileItem is set as request 
> attribute together with the error message.
> The request is finished and based on the controller configurations redirected 
> to a second request.
> While handling the second request the previous request's attributes get 
> restored (RequestHandler.java line 733ff). This goes down into 
> SafeObjectInfo.resolveClass() where an Incompatible class exception is 
> thrown. I compared my custom project with the current development status and 
> worked in the changes from commit 3f60efb343a11723aa56c1bc1f5afac3a2f26e9f in 
> OFBIZ-10837.
> While this fixes the issue with the incompatible class exception it also 
> makes it impossible to retrieve any attributes from the first request. 
> Therefore my error message cannot be shown.
> Is there a way to fix it or is it otherwise necessary to always set 
> "fileItems" as request attribute as added in -OFBIZ-11246-?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to