oltu-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rover Rhubarb (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OLTU-26) Guice+Jersey+Amber: Can't correctly create OAuthTokenRequest instance
Date Wed, 01 Jun 2016 19:02:59 GMT

    [ 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)

Mime
View raw message