[aerogear-dev] "application/json; charset=utf-8" not supported

Corinne Krych corinnekrych at gmail.com
Thu Jul 11 10:32:02 EDT 2013


Hi Tobias

Look good to me too
Make it PR

Corinne
On Jul 10, 2013, at 2:40 PM, Bruno Oliveira <bruno at 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&lt;
>> 
>>> daniel.bevenius@
>> 
>>> &gt; 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&lt;
>> 
>>> matzew@
>> 
>>> &gt; 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&lt;
>> 
>>> corinnekrych@
>> 
>>> &gt;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&lt;
>> 
>>> matzew@
>> 
>>> &gt; 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&lt;
>> 
>>> matzew@
>> 
>>> &gt; 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 at .jboss
>> 
>>>>>>>>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>>>>>>> 
>> 
>>> aerogear-dev at .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 at .jboss
>> 
>>>>>>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>>>>> 
>> 
>>> aerogear-dev at .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 at .jboss
>> 
>>>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> aerogear-dev mailing list
>>>>>>>>>>> 
>> 
>>> aerogear-dev at .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 at .jboss
>> 
>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> _______________________________________________
>>>>>>>>> aerogear-dev mailing list
>>>>>>>>> 
>> 
>>> aerogear-dev at .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 at .jboss
>> 
>>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> aerogear-dev mailing list
>>>>>> 
>> 
>>> aerogear-dev at .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 at .jboss
>> 
>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>> 
>>>> 
>>> _______________________________________________
>>> aerogear-dev mailing list
>> 
>>> aerogear-dev at .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-charset-utf-8-not-supported-tp3314p3810.html
>> Sent from the aerogear-dev mailing list archive at Nabble.com.
>> _______________________________________________
>> aerogear-dev mailing list
>> aerogear-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
> 
> -- 
> abstractj
> 
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev




More information about the aerogear-dev mailing list