[
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)