Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jersey-dev] Internal request with new UriInfo

But how do I then obtain an instance of the subresource and call
methods on it? E.g. post().

I'm also reading paths from data, so hardcoding them in @Path would be
less flexible.

On Mon, Oct 19, 2020 at 7:43 PM Jan Supol <jan.supol@xxxxxxxxxx> wrote:
>
> In Jersey, you can have something like:
>
> public static class SubResource {
>      private UriInfo uriInfo;
>      public SubResource(@Context UriInfo info) {
>          this.uriInfo = info;
>      }
>
>      @GET public String get() {
>          return uriInfo.getAbsolutePath().toASCIIString();
>      }
> }
>
> @Path("/")
> public static class Resource {
>      @Path("/sub")
>      public Class<SubResource> getSub() {
>          return SubResource.class;
>      }
> }
>
> Would that help?
>
> -- Jan
>
> On 19.10.2020 18:29, Martynas Jusevičius wrote:
> > Thanks. Yes I instantiate Resource on my own.
> >
> > It’s because in 2.x there does not seem to be any mechanism to lookup
> > resource by URI? While in 1.x there was ResourceContext.matchResource():
> > https://github.com/eclipse-ee4j/jersey/issues/2444
> > <https://urldefense.com/v3/__https://github.com/eclipse-ee4j/jersey/issues/2444__;!!GqivPVa7Brio!MCnZgqZ74rdUzIsS0up_Y_xaZgn3GmUi5SyIzdbytctEyUnsxO8ofcX3OkXS7ljX$>
> > The issue is now 7 years old - how come it’s not implemented in 2.x?
> >
> > So I need my own UriInfo implementation? Or can I reuse one somehow?
> >
> > On Mon, 19 Oct 2020 at 18.16, Jan Supol <jan.supol@xxxxxxxxxx
> > <mailto:jan.supol@xxxxxxxxxx>> wrote:
> >
> >     So you instantiate the Resource class on your own? I am afraid
> >     that you
> >     need to instantiate the correct UriInfo on your own, too.
> >
> >     For the sub-resource case, JAX-RS Spec. Section 3.2 says: Objects
> >     returned by sub-resource locators (see Section 3.4.1) are expected
> >     to be
> >     initialized by their creator.
> >
> >     Thanks,
> >
> >     Jan
> >
> >     On 19.10.2020 17:23, Martynas Jusevičius wrote:
> >     > Hi Jan,
> >     >
> >     > OK let me try to explain.
> >     >
> >     > Lets say Resource is constructed with UriInfo where
> >     >
> >     requestUri=https://urldefense.com/v3/__https://localhost/some/path__;!!GqivPVa7Brio!MS_K1k3MXtVAEn9RUvumFbiAbJ9aUw7G7CZOzleix_3dgXbCtfyJaMIXnN-hW5Em$
> >     >
> >     > But then I want to create another Resource and execute its
> >     methods as
> >     > if it was a completely new request, e.g.
> >     >
> >     requestUri=https://urldefense.com/v3/__https://localhost/another/path__;!!GqivPVa7Brio!MS_K1k3MXtVAEn9RUvumFbiAbJ9aUw7G7CZOzleix_3dgXbCtfyJaMIXnLGxbHlH$
> >     >
> >     > So the same UriInfo does not apply. Nor is this a sub-resource case.
> >     >
> >     > On Mon, Oct 19, 2020 at 5:16 PM Jan Supol <jan.supol@xxxxxxxxxx
> >     <mailto:jan.supol@xxxxxxxxxx>> wrote:
> >     >> Hi,
> >     >>
> >     >> I am not sure I follow. Unless the resource is specified as a
> >     singleton
> >     >> (either by using the @Singleton annotation) or by
> >     >> Application.getSingletons(), the Resource classes are
> >     instantiated per
> >     >> request, so you should have the proper UriInfo.
> >     >>
> >     >> Note that you may also inject @Context UriInfo as a post method
> >     argument.
> >     >>
> >     >> Thanks,
> >     >>
> >     >> Jan
> >     >>
> >     >> On 19.10.2020 16:34, Martynas Jusevičius wrote:
> >     >>> Hi,
> >     >>>
> >     >>> say I have a resource class with a UriInfo constructor and a
> >     @POST method.
> >     >>>
> >     >>> How do I call post() on a new Resource with a new UriInfo with a
> >     >>> different requestUri?
> >     >>>
> >     >>> public class Resource
> >     >>> {
> >     >>>
> >     >>>       @Inject
> >     >>>       public Resource(UriInfo uriInfo)
> >     >>>       {
> >     >>>           ...
> >     >>>       }
> >     >>>
> >     >>>       @POST
> >     >>>       public post(Model model)
> >     >>>       {
> >     >>>           // use getUriInfo() here
> >     >>>           ...
> >     >>>           // forward POST -- how to construct UriInfo with an
> >     arbitrary
> >     >>> requestUri?
> >     >>>           new Resource(???).post(newModel);
> >     >>>           ...
> >     >>>       }
> >     >>>
> >     >>> }
> >     >>>
> >     >>>
> >     >>> Martynas
> >     >>> _______________________________________________
> >     >>> jersey-dev mailing list
> >     >>> jersey-dev@xxxxxxxxxxx <mailto:jersey-dev@xxxxxxxxxxx>
> >     >>> To unsubscribe from this list, visit
> >     https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jersey-dev__;!!GqivPVa7Brio!Ll-NKpZ9Yae48eNnU-pgrlG-iFyaoR8gSuX7AC88OCuRiyVdKTD6GuxH4cVJ3nxa$
> >     >> _______________________________________________
> >     >> jersey-dev mailing list
> >     >> jersey-dev@xxxxxxxxxxx <mailto:jersey-dev@xxxxxxxxxxx>
> >     >> To unsubscribe from this list, visit
> >     https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jersey-dev__;!!GqivPVa7Brio!MS_K1k3MXtVAEn9RUvumFbiAbJ9aUw7G7CZOzleix_3dgXbCtfyJaMIXnPbCzE8w$
> >     > _______________________________________________
> >     > jersey-dev mailing list
> >     > jersey-dev@xxxxxxxxxxx <mailto:jersey-dev@xxxxxxxxxxx>
> >     > To unsubscribe from this list, visit
> >     https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jersey-dev__;!!GqivPVa7Brio!MS_K1k3MXtVAEn9RUvumFbiAbJ9aUw7G7CZOzleix_3dgXbCtfyJaMIXnPbCzE8w$
> >     _______________________________________________
> >     jersey-dev mailing list
> >     jersey-dev@xxxxxxxxxxx <mailto:jersey-dev@xxxxxxxxxxx>
> >     To unsubscribe from this list, visit
> >     https://www.eclipse.org/mailman/listinfo/jersey-dev
> >     <https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jersey-dev__;!!GqivPVa7Brio!MCnZgqZ74rdUzIsS0up_Y_xaZgn3GmUi5SyIzdbytctEyUnsxO8ofcX3OjKjUKYW$>
> >
> >
> > _______________________________________________
> > jersey-dev mailing list
> > jersey-dev@xxxxxxxxxxx
> > To unsubscribe from this list, visit https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jersey-dev__;!!GqivPVa7Brio!MCnZgqZ74rdUzIsS0up_Y_xaZgn3GmUi5SyIzdbytctEyUnsxO8ofcX3OjKjUKYW$
> _______________________________________________
> jersey-dev mailing list
> jersey-dev@xxxxxxxxxxx
> To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jersey-dev


Back to the top