Hi Tobias
Look good to me too
Make it PR
Corinne
On Jul 10, 2013, at 2:40 PM, Bruno Oliveira <bruno(a)abstractj.org> wrote:
Hi Tobias, thanks in advance.
Feel free to attach the PR for AG Controller if you are comfortable with it.
getrostt wrote:
> Hello all,
>
> sorry that I just jump into your discussion.
>
> I just wanted to share a fix I tried yesterday:
>
> //snip
> final Optional<String> contentType = extractContentType(routeContext);
> if (contentType.isPresent()) {
> final Consumer consumer = consumers.get(contentType.get());
> //snip
>
> and the method extractContentType:
>
> private static Optional<String> extractContentType(final RouteContext
> routeContext) {
> final String contentType = routeContext.getRequest().getContentType();
> if (contentType != null) {
> try {
> MimeType mimeType = new MimeType(contentType);
> return Optional.of(mimeType.getBaseType());
> } catch (MimeTypeParseException e) {
> throw new RuntimeException("Error parsing content-type " +
contentType,
> e);
> }
> }
> return Optional.absent();
> }
>
> Regards,
> Tobias
>
>
> danielbevenius wrote
>> I had a look and this is due to a bug I think. The issue is that when you
>> create Consumer it is for a specific media type which is a simple String.
>> This is then compared to the Content-Type of the request. To verify this
>> you should be able to create a Consumer, which can extend the
>> JsonConsumer,
>> in the demo, that returns the media type with the property
'charset=utf-8'
>> for the mediaType() method. I'm not saying that this is how it should be
>> but it might be a quicker way to move forward than to fix it in the
>> controller.
>>
>> Let me know what you think
>>
>>
>> On 18 June 2013 11:19, Daniel Bevenius<
>
>> daniel.bevenius@
>
>> > wrote:
>>
>>> I'll take a look at what is going on. Can't tell from just reading
the
>>> emails here.
>>>
>>> Regarding using JAX-RS I would say that sounds like a better option
>>> moving
>>> forward, as the future of the controller is uncertain.
>>>
>>>
>>> On 18 June 2013 11:02, Matthias Wessendorf<
>
>> matzew@
>
>> > wrote:
>>>> Perhaps, we change to backend to use only JAX-RS ?
>>>> I do that for the PushEE Server (using AeroGear-Security in there as
>>>> well, with JAX-RS)
>>>>
>>>> -Matthias
>>>>
>>>>
>>>> On Tue, Jun 18, 2013 at 10:53 AM, Corinne Krych<
>
>> corinnekrych@
>
>> >wrote:
>>>>> If I patch controller-aerogear with some code like
>>>>>
>>>>>
org.jboss.aerogear.controller.util.ParameterExtractor.getConsumer(....)
>>>>> with snippet below:
>>>>>
>>>>> if (contentType.contains("application/json")) {
>>>>> contentType = "application/json";
>>>>> }
>>>>>
>>>>>
>>>>> I think that for the similar to
>>>>>
https://issues.jboss.org/browse/AEROGEAR-1085
>>>>> we should ignore subtype in content-type
>>>>>
>>>>>
>>>>> I go a step further in my login request but now I get this exception
>>>>> from server:
>>>>>
>>>>> 10:43:42,379 ERROR [org.jboss.aerogear.controller.log]
>>>>> (http--127.0.0.1-8080-1) AG_CONTROLLER000005: Exception Message:
'User
>>>>> id
>>>>> can not be null.': java.lang.IllegalArgumentException: User id
can not
>>>>> be
>>>>> null.
>>>>> at
>>>>>
org.picketlink.credential.DefaultLoginCredentials.setUserId(DefaultLoginCredentials.java:44)
>>>>> [picketlink-api-2.5.0.Beta4.jar:]
>>>>> at
>>>>>
org.picketlink.credential.DefaultLoginCredentials$Proxy$_$$_WeldClientProxy.setUserId(DefaultLoginCredentials$Proxy$_$$_WeldClientProxy.java)
>>>>> [picketlink-api-2.5.0.Beta4.jar:]
>>>>> at
>>>>>
org.jboss.aerogear.security.picketlink.auth.AuthenticationManagerImpl.login(AuthenticationManagerImpl.java:52)
>>>>> [aerogear-security-picketlink-1.0.1.jar:1.0.1]
>>>>> at
>>>>>
org.jboss.aerogear.security.picketlink.auth.AuthenticationManagerImpl.login(AuthenticationManagerImpl.java:34)
>>>>> [aerogear-security-picketlink-1.0.1.jar:1.0.1]
>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>> [rt.jar:1.7.0_15]
>>>>> at
>>>>>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>> [rt.jar:1.7.0_15]
>>>>> at
>>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>> [rt.jar:1.7.0_15]
>>>>> at java.lang.reflect.Method.invoke(Method.java:601)
[rt.jar:1.7.0_15]
>>>>> at
>>>>>
org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:44)
>>>>> [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
>>>>> at
>>>>>
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105)
>>>>> [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
>>>>>
>>>>>
>>>>> Any idea?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 18 June 2013 10:44, Matthias Wessendorf<
>
>> matzew@
>
>> > wrote:
>>>>>> This works:
>>>>>>
>>>>>>
>>>>>> curl -v -b cookies.txt -c cookies.txt -H "Accept:
application/json;
>>>>>> charset=utf-8" -H "Content-type: application/json"
-X POST -d
>>>>>> '{"loginName": "john",
"password":"123"}'
>>>>>>
http://localhost:8080/prodoctor/login
>>>>>>
>>>>>>
>>>>>> (accept header)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Jun 18, 2013 at 10:35 AM, Matthias Wessendorf<
>>>>>>
>
>> matzew@
>
>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jun 18, 2013 at 10:03 AM, Corinne Krych<
>>>>>>>
>
>> corinnekrych@
>
>>> wrote:
>>>>>>>> Seb,
>>>>>>>>
>>>>>>>> When debugging with a breakpoint
>>>>>>>> on
org.jboss.aerogear.controller.util.ParameterExtractor.java line
>>>>>>>> 139, I
>>>>>>>> still get consumers map containing only
"application/json" and then
>>>>>>>> exception get throw line l152.
>>>>>>>>
>>>>>>>> contentType holds "application/json;
charset=utf-8"
>>>>>>>>
>>>>>>>> Server side issue to me.
>>>>>>>>
>>>>>>>> Any more idea?
>>>>>>>>
>>>>>>>
>>>>>>> Doing this CUR:
>>>>>>> curl -v -b cookies.txt -c cookies.txt -H "Accept:
application/json"
>>>>>>> -H
>>>>>>> "Content-type: application/json; charset=utf-8" -X
POST -d
>>>>>>> '{"loginName":
>>>>>>> "john", "password":"123"}'
http://localhost:8080/prodoctor/login
>>>>>>>
>>>>>>>
>>>>>>> same issue (=> same exception)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> On 18 June 2013 09:53, Matthias Wessendorf<
>
>> matzew@
>
>> > wrote:
>>>>>>>>> can you debug and see what's actually hitting the
server? The
>>>>>>>>> Exception is, to be honest, not meaningful :)
>>>>>>>>>
>>>>>>>>> -M
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jun 18, 2013 at 9:19 AM, Sebastien Blanc<
>>>>>>>>>
>
>> scm.blanc@
>
>>> wrote:
>>>>>>>>>> Sorry I though you were talking about Travis ...
Hum, okay so the
>>>>>>>>>> workaround don't work ... but the curl was,
maybe lowercase issue,
>>>>>>>>>> I see
>>>>>>>>>> now "utf-8" and iOs maybe send
"UTF-8" and controller match also
>>>>>>>>>> the case ?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Jun 18, 2013 at 9:14 AM, Matthias
Wessendorf<
>>>>>>>>>>
>
>> matzew@
>
>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Jun 18, 2013 at 9:01 AM, Matthias
Wessendorf<
>>>>>>>>>>>
>
>> matzew@
>
>>> wrote:
>>>>>>>>>>>> still the failure, (both: AeroGear-iOS
1.0.1 (AFN 1.0.RC1) + the
>>>>>>>>>>>> branch going to AFN 1.2.1
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ==> same exception (see my different
testing iOS environments
>>>>>>>>>>> above)
>>>>>>>>>>>
>>>>>>>>>>> -Matthias
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Jun 18, 2013 at 8:50 AM,
Sebastien Blanc<
>>>>>>>>>>>>
>
>> scm.blanc@
>
>>> wrote:
>>>>>>>>>>>>> Oups,
>>>>>>>>>>>>> I should not push code at 1 am ;)
>>>>>>>>>>>>> Should be okay now
>>>>>>>>>>>>> Seb
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Jun 18, 2013 at 8:30 AM,
Matthias Wessendorf<
>>>>>>>>>>>>>
>
>> matzew@
>
>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Jun 18, 2013 at 12:56 AM,
Sebastien Blanc<
>>>>>>>>>>>>>>
>
>> scm.blanc@
>
>>> wrote:
>>>>>>>>>>>>>>> Hi Corinne,
>>>>>>>>>>>>>>> On a route you can set
different consumers (
>>>>>>>>>>>>>>>
http://aerogear.org/docs/guides/aerogear-controller/mediatypes.html
>>>>>>>>>>>>>>> )
>>>>>>>>>>>>>>> , I've updated the Route
on Prodoctor and now it seems to
>>>>>>>>>>>>>>> work. I can not
>>>>>>>>>>>>>>> reproduce your ios example
here on my fedora box but this
>>>>>>>>>>>>>>> curl works now :
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> curl -v -b cookies.txt -c
cookies.txt -H "Accept:
>>>>>>>>>>>>>>> application/json" -H
"Content-type: application/json;
>>>>>>>>>>>>>>> charset=utf-8" -X
>>>>>>>>>>>>>>> POST -d
'{"loginName": "john", "password":"123"}'
>>>>>>>>>>>>>>>
http://localhost:8080/prodoctor/login
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Update the repo and give it a
try !
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> please push this type:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> import
org.aerogear.prodoctor.config.CustomConsumer;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> it's missing and the build is
failing
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Seb
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Mon, Jun 17, 2013 at 10:47
PM, Corinne Krych<
>>>>>>>>>>>>>>>
>
>> corinnekrych@
>
>>> wrote:
>>>>>>>>>>>>>>>> Hello Guys
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Writing code for
ProDoctor demo, on client side, I'm using
>>>>>>>>>>>>>>>> Xcode template for AGPush
which is based on AFNetworking 121
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> When doing my login
request in iOS I bumped into the issue
>>>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>>> having content type set
to "application/json; charset=utf-8"
>>>>>>>>>>>>>>>> whereas on
>>>>>>>>>>>>>>>> routes (backend) only
"application/json" is set which causes
>>>>>>>>>>>>>>>> this exception:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> [application/json].':
java.lang.RuntimeException:
>>>>>>>>>>>>>>>> AG_CONTROLLER000012: No
Consumer found for Parameter:
>>>>>>>>>>>>>>>>
'Parameter[type=ENTITY, type=class
>>>>>>>>>>>>>>>>
org.aerogear.prodoctor.model.SaleAgent]'. The registered
>>>>>>>>>>>>>>>> Consumers were:
>>>>>>>>>>>>>>>>
'[JsonConsumer[mediaType=application/json]]'. Please add a
>>>>>>>>>>>>>>>> Consumer for one
>>>>>>>>>>>>>>>> the media types supported
by the route: [application/json].
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>>>
org.jboss.aerogear.controller.util.ParameterExtractor.getConsumer(ParameterExtractor.java:152)
>>>>>>>>>>>>>>>>
[aerogear-controller-1.0.1.jar:1.0.1]
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>>>
org.jboss.aerogear.controller.util.ParameterExtractor.extractArguments(ParameterExtractor.java:70)
>>>>>>>>>>>>>>>>
[aerogear-controller-1.0.1.jar:1.0.1]
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I think we should support
both "application/json;
>>>>>>>>>>>>>>>> charset=utf-8" and
"application/json". /shall we open a
>>>>>>>>>>>>>>>> JIRA on AeroGear
>>>>>>>>>>>>>>>> Controller to support
both?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> wdyt?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Corinne
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>>>>>> aerogear-dev mailing
list
>>>>>>>>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Matthias Wessendorf
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>>>>>>>>>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>>>>>>>>>>>> twitter:
http://twitter.com/mwessendorf
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Matthias Wessendorf
>>>>>>>>>>>>
>>>>>>>>>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>>>>>>>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>>>>>>>>>> twitter:
http://twitter.com/mwessendorf
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Matthias Wessendorf
>>>>>>>>>>>
>>>>>>>>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>>>>>>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>>>>>>>>> twitter:
http://twitter.com/mwessendorf
>>>>>>>>>>>
>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Matthias Wessendorf
>>>>>>>>>
>>>>>>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>>>>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>>>>>>> twitter:
http://twitter.com/mwessendorf
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> aerogear-dev mailing list
>>>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Matthias Wessendorf
>>>>>>>
>>>>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>>>>> twitter:
http://twitter.com/mwessendorf
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Matthias Wessendorf
>>>>>>
>>>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>>>> twitter:
http://twitter.com/mwessendorf
>>>>>>
>>>>>> _______________________________________________
>>>>>> aerogear-dev mailing list
>>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> aerogear-dev mailing list
>>>>>
>
>> aerogear-dev@.jboss
>
>>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>
>>>>
>>>>
>>>> --
>>>> Matthias Wessendorf
>>>>
>>>> blog:
http://matthiaswessendorf.wordpress.com/
>>>> sessions:
http://www.slideshare.net/mwessendorf
>>>> twitter:
http://twitter.com/mwessendorf
>>>>
>>>> _______________________________________________
>>>> aerogear-dev mailing list
>>>>
>
>> aerogear-dev@.jboss
>
>>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>
>>>
>> _______________________________________________
>> aerogear-dev mailing list
>
>> aerogear-dev@.jboss
>
>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>
>
>
>
>
> --
> View this message in context:
http://aerogear-dev.1069024.n5.nabble.com/aerogear-dev-application-json-c...
> Sent from the aerogear-dev mailing list archive at
Nabble.com.
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
--
abstractj
_______________________________________________
aerogear-dev mailing list
aerogear-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/aerogear-dev