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

Mathieu Lirzin commented on OFBIZ-10438:
----------------------------------------

Here are two patches for the refactoring 
([^OFBIZ-10438_0005-Improved-Parse-controller-config-in-one-place.patch], 
[^OFBIZ-10438_0006-Improved-Split-resolveURI-in-two-methods.patch])

A few comments:
 - I reverted the use of the {{service}} method since you prefer to narrow to 
only {{GET}} and {{POST}} methods.
 - {{resolveURI}} has been splitted to separate the resolution of the uri and 
the resolution of method
 - {{resolveURI}} now integrates the logic regarding the override view uri.
 - I have used a new exception type to handle the special error handling for 
method not supported however I am not sure about the strategy unconditionally 
not using the default error page
 - I have removed the stream based implementation of {{resolveMethod}} which 
was a bit tricky to understand.
 - I have adapted the error message to not include the supported method (but 
not the translation). The reason is that IMO the {{OPTIONS}} method should be 
used for getting that information instead.
 - I am not sure we should support both "all" and "" to refer to the whole set 
of methods. it would be simpler to have only one choice. I don't have any 
preference.

It is possible that I overlooked some of the tests you described above, so tell 
me if that's the case.

> Add method attribute to request-map to controll a uri can be called GET or 
> POST only
> ------------------------------------------------------------------------------------
>
>                 Key: OFBIZ-10438
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-10438
>             Project: OFBiz
>          Issue Type: Improvement
>          Components: framework
>    Affects Versions: Trunk
>            Reporter: Shi Jinghai
>            Assignee: Shi Jinghai
>            Priority: Minor
>         Attachments: 
> OFBIZ-10438_0001-Improved-Add-ControlServlet-service-method.patch, 
> OFBIZ-10438_0002-Improved-Add-optional-method-attribute-in-request-ma.patch, 
> OFBIZ-10438_0003-Improved-Factorize-default-request-search-in-Request.patch, 
> OFBIZ-10438_0004-Improved-Add-RequestHandler-resolveURI-method.patch, 
> OFBIZ-10438_0005-Improved-Parse-controller-config-in-one-place.patch, 
> OFBIZ-10438_0006-Improved-Split-resolveURI-in-two-methods.patch
>
>
> As discussed in OFBIZ-4274, OFBiz runs doGet method in ControlServlet no 
> matter what request it is.
> I like Mathieu's comment on adding a method attribute to the request-map 
> element, it's almost the same as we implemented in our openapi:
>  
> {code:java}
> <request-map uri="examples" method="get">
>    <security https="true" auth="true"/>
>    <event type="java" path="ExamplesHandlers" invoke="getExamples"/>
>    <response name="success" type="view" value="..."/>
>    <response name="error" type="view" value="..."/>
> </request-map>
> {code}
>  The difference is that we DON'T support method list expression:
> {code:java}
> <request-map uri="examples" method="get,post">...</request-map>
> {code}
>   
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to