You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@abdera.apache.org by "Remy Gendron (JIRA)" <ji...@apache.org> on 2008/04/15 05:37:04 UTC

[jira] Updated: (ABDERA-146) Bad entry edit link created in my server when using a provider base path

     [ https://issues.apache.org/jira/browse/ABDERA-146?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Remy Gendron updated ABDERA-146:
--------------------------------

    Description: 
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

  was:
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.

Thanks for looking into this.

Remy


> 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
>
> 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.