Hi Pavel,

I'd start with the resource reference exposed by Request, and use the
methods of the Reference object to do what you want, e.g.

response.redirectTemporary(
  new Reference(
    request.getResourceRef().getParentRef().getParentRef(),
    "group/" + groupId
  )
);

But Jerome and friends,

Now that I say it out loud, though, I can't think of a good reason why the
response.redirect* methods couldn't attempt this internally if they are
passed a relative URI string or reference, e.g. in o.r.d.Response:

public void setRedirectRef(Reference redirectRef){
  if(redirectRef.isRelative()){ // relative redirects not legal in HTTP/1.1,
resolve
    newRedirectRef = new Reference(
      getRequest().getResourceRef(),
      redirectRef.getFragment()
    ).getTargetRef();
    // how come there isn't a Reference(Reference, Reference) constructor
anyway?
    this.redirectRef = newRedirectRef;
  } else {
    this.redirectRef = redirectRef;
  }
}

I would have to imagine this is *always* what the user would want when
passing a relative Reference or String into one of these redirects.
Thoughts, anybody?

- Rob


On 12/16/07, Pavel Kolesnikov <[EMAIL PROTECTED]> wrote:
>
> However, if I call
>
>    response.redirectTemporary("group/" + groupId);
>
> it redirects to http://localhost:8080/group/groupId while I want it to
> redirect to http://localhost:8080/app/api/group/groupId (as I have
> written, http://localhost:8080/app/api is the root URL of my REST
> application).
>
>

Reply via email to