[
https://issues.apache.org/jira/browse/ABDERA-146?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Calavera updated ABDERA-146:
----------------------------------
Attachment: route_manager.patch
I'm not sure if this is correct, but I think that the RouteManager class should
use the contextPath instead of the targetBasePath in order to create the url
for the route.
> Bad entry edit link created in my server when using a provider base path
> ------------------------------------------------------------------------
>
> Key: ABDERA-146
> URL: https://issues.apache.org/jira/browse/ABDERA-146
> Project: Abdera
> Issue Type: Bug
> Affects Versions: 0.4.0
> Reporter: Remy Gendron
> Attachments: route_manager.patch
>
>
> My Abdera servlet is not mapped to the root of my application context. It is
> mapped to /atom/*, so that my application context can host multiple servlets
> and a static HTML site at the root path.
> Thus, I create my provider with a base of /atom/. This in turn creates the
> following route: /atom/:collection/:entry
> When I GET an entry, the resolving part goes well. However, the generated
> edit link for this entry duplicates the base part of the URI.
> RouteManager.urlFor(RequestContext, Object, Object) line: 158
> SpringProvider(AbstractProvider).urlFor(RequestContext, Object, Object) line:
> 102
> ServletRequestContext(AbstractRequestContext).urlFor(Object, Object) line:
> 184
> MovieAdapter(AbstractCollectionAdapter).getHref(RequestContext) line: 82
> MovieAdapter(AbstractEntityCollectionAdapter<T>).getFeedIriForEntry(T,
> RequestContext) line: 548
> MovieAdapter(AbstractEntityCollectionAdapter<T>).getEntryFromCollectionProvider(RequestContext)
> line: 721
> MovieAdapter(AbstractEntityCollectionAdapter<T>).getEntry(RequestContext)
> line: 316
> SpringProvider(AbstractProvider).process(RequestContext) line: 155
> The last stack frame (urlFor) is where I believe the error is. The route
> expands properly and includes the provider base path. However, the
> getTargetBasePath() call concatenates the application context with the
> servlet path, the servlet path being equal to the provider base path.
> Real values used in my tests:
> application context: /imdb
> provider base: /atom/
> adapter href: movies
> GET URI: http://localhost:8080/imdb/atom/movies/12345
> The generated edit URI is: http://localhost:8080/imdb/atom/atom/movies/12345
> Thanks for looking into this.
> Remy
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.