You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oltu.apache.org by "Rover Rhubarb (JIRA)" <ji...@apache.org> on 2016/06/01 19:02:59 UTC

[jira] [Commented] (OLTU-26) Guice+Jersey+Amber: Can't correctly create OAuthTokenRequest instance

    [ https://issues.apache.org/jira/browse/OLTU-26?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15310901#comment-15310901 ] 

Rover Rhubarb commented on OLTU-26:
-----------------------------------

How is this considered resolved?
The workaround is clearly a hack.
The issue of the parameters missing from the HttpServletRequest is considered "normal" (or at least "Won't Fix") in Jersey: https://java.net/jira/browse/JERSEY-766
OLTU's TokenEndpoint.java integration test demonstrates the use of this @Context header.

Arguably the fault is Jersey's but given they probably won't budge, and given that a lot of devs are going to be using Jersey and only finding this issue after a lot of searching, couldn't OLTU add it's own fix or workaround?

One solution might be to abstract the HttpServletRequest into something more generic, then provide different implementations for it, one of which supports jersey by taking form parameters as an argument... (internally creating the wrapper).
The most simple form could take all of the details as arguments so that it's independent of HttpServletRequest altogether



> Guice+Jersey+Amber: Can't correctly create OAuthTokenRequest instance
> ---------------------------------------------------------------------
>
>                 Key: OLTU-26
>                 URL: https://issues.apache.org/jira/browse/OLTU-26
>             Project: Apache Oltu
>          Issue Type: Bug
>          Components: oauth2-common
>         Environment: jersey 1.10
> guice 3.0-SNAPSHOT
> amber 0.22-incubating-SNAPSHOT
>            Reporter: Alexander Urmuzov
>
> I've got a problem with creating OAuthTokenRequest.
> It needs an instance of HttpServletRequest on creation, but all instances which I can get through guice or jersey injections have no post parameters.
> Guice injection example:
>     private final Provider<HttpServletRequest> requestProvider;
>     @Inject
>     public TokenEndpoint(Provider<HttpServletRequest> requestProvider) {
>         this.requestProvider = requestProvider;
>     }
>     @POST
>     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
>     @Produces(MediaType.APPLICATION_JSON)
>     public Response authorize() throws OAuthSystemException {
>         OAuthTokenRequest oauthRequest = null;
>         try {
>             oauthRequest = new OAuthTokenRequest(requestProvider.get());
>     ....
> Jersey injection example:
>     @POST
>     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
>     @Produces(MediaType.APPLICATION_JSON)
>     public Response authorize(@Context HttpServletRequest request) throws OAuthSystemException {
>         OAuthTokenRequest oauthRequest = null;
>         try {
>             oauthRequest = new OAuthTokenRequest(request);
> Looks like jersey have parsed HttpServletRequest and removed all post parameters from it.
> If I attach filter that tries to get some parameter from HttpServletRequest before jersey, my code works, but with exception from jersey.
> But I can retrieve MultivaluedMap of post parameters from jersey with all data and no errors.
> I think there must be some alternative constructor for such environments. Any thoughts?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)