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

Nicolas Malin commented on OFBIZ-11007:
---------------------------------------

Hello [~mthl] ,

I reviewed the patch, resync with trunk, correct issues raise by Jacques and 
after an uncomfortable situation with the path naming I tried an other naming 
that I find it more intuitive:

 
{code:java}
    entity/list -> entitymaint
    entity/{entityName} -> FindGeneric
    entity/{entityName}/{pkValues: .*} -> ViewGeneric 
    entity/edit/{entityName} -> edit form
    entity/edit/{entityName}/{pkValues: .*} -> edit form
    entity/relations/{entityName} -> ViewRelation
{code}
This introduce a conflict for the resolution due to the parsing of request map 
entries didn't realize on the entry request-map ordered definition in 
controller.xml (so if you call *entity/list*, it's *entity/\{entityName}* that 
would be match), and  generate list of reserved word that dynamic element can't 
be use (entity would be never named *list*, *edit* or *relations*)

For the first, I change in function RequestHandler.resolveTemplateURI() the 
resolution order :
 *  check first by raw: entity/list match before any dynamic case
 *  order entries by the dynamic deep. The previous example would be parsing as 
follow  

{code:java}
    entity/relations/{entityName}
    entity/edit/{entityName}
    entity/edit/{entityName}/{pkValues: .*}
    entity/{entityName}
    entity/{entityName}/{pkValues: .*}     
    
{code}
For the second I think it's not a problem but more on developper hands

The code changed on RequestHandler.resolveTemplateURI() it's just to experiment 
and exchange if my idea have some interesting element or smells like death :)
All has been put on [^OFBIZ-11007_refactor-entitymaint.patch]

 

> REST: adding segmented URI support
> ----------------------------------
>
>                 Key: OFBIZ-11007
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-11007
>             Project: OFBiz
>          Issue Type: New Feature
>          Components: framework
>    Affects Versions: Trunk
>         Environment: 
>            Reporter: Artemiy Rozovyk
>            Assignee: Nicolas Malin
>            Priority: Minor
>              Labels: REST, URI
>             Fix For: Upcoming Branch
>
>         Attachments: OFBIZ-11007_refactor-entitymaint.patch, 
> OFBIZ-11007_refactor-entitymaint.patch, entitymaint_example.patch, 
> restful_URIs.patch
>
>
> Following the discussion on making OFBiz RESTful OFBIZ-4274 i implemented the 
> support of segmented URIs without interfering with current mechanisms of URI 
> resolution nor with  _overrideView()_ feature.
> Combined with work on associating URIs and HTTP methods done by [~mthl] in 
> OFBIZ-10438 , we are now able to provide RESTful APIs as follows:
> {code:java}
> <request-map uri="foo/bar" method="get">
> ...
> <request-map uri="foo/bar/{baz}" method="get">
> ...
> <request-map uri="foo/bar/{baz}" method="post">
> ...
> {code}
> After we matched a request-map having parametrized URI as in 
> {code:java}
> uri="foo/bar/{baz}"
> {code}
> the value is available inside the request attributes with the corresponding 
> key (here _"baz"_)
> The *restful_URIs.patch* allows segmented URI support.
> The *entitymaint_example.patch* is a modified _entitymaint_ part that serves 
> as an example of possible application of new system. 
> Any questions or comments are welcomed.



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

Reply via email to