[ 
https://issues.apache.org/jira/browse/FINERACT-819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Vorburger updated FINERACT-819:
---------------------------------------
    Labels: technical  (was: )

> Enable "normal" (usual) JSON mapping to request Java objects
> ------------------------------------------------------------
>
>                 Key: FINERACT-819
>                 URL: https://issues.apache.org/jira/browse/FINERACT-819
>             Project: Apache Fineract
>          Issue Type: Improvement
>    Affects Versions: 1.4.0
>            Reporter: Michael Vorburger
>            Priority: Major
>              Labels: technical
>
> Based on experience/observation while attempting to implement FINERACT-726 
> via 
> [https://github.com/apache/fineract/compare/develop...vorburger:FINERACT-726_Auth]
>  :
> In Fineract as is it does not seem to be easily possible to "just" write a 
> JAX RS *Resource API class with a method which instead of {{@QueryParam}} or 
> {{String apiRequestBodyAsJson}} like everywhere else in existing code simply 
> accepts a regular POJO class such as {{AuthenticateRequest}} - which is how 
> JAX RS (or even Spring MVC) is typically used; that fails with:
> {noformat}
> A message body reader for Java class 
> org.apache.fineract.infrastructure.security.api.AuthenticationApiResource$AuthenticateRequest,
>  and Java type class org.apache.fineract.in
> frastructure.security.api.AuthenticationApiResource$AuthenticateRequest, and 
> MIME media type application/octet-stream was not found.                       
>                    
> The registered message body readers compatible with the MIME media type are:  
>                                                                               
>                   
> application/octet-stream ->                                                   
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.ByteArrayProvider                  
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.FileProvider                       
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.InputStreamProvider                
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.DataSourceProvider                 
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.RenderedImageProvider              
>                                                                               
>                   
> */* ->                                                                        
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.FormProvider                       
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider              
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.StringProvider                     
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.ByteArrayProvider                  
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.FileProvider                       
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.InputStreamProvider                
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.DataSourceProvider                 
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General     
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.ReaderProvider                     
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.DocumentProvider                   
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader  
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader     
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader     
>                                                                               
>                   
>   com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General    
>                                                                               
>                   
>   com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General          
>                                                                               
>                   
>   com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General         
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General     
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General     
>                                                                               
>                   
>   com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
>   com.sun.jersey.core.impl.provider.entity.EntityHolderReader
>   com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
>   com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy {noformat}
> To move forward/unblock FINERACT-726, I've gone for the {{String 
> apiRequestBodyAsJson}} approach there, and then using {{GSON}} code to parse 
> the JSON explicitly, but that approach, used in other Resource classes in 
> Fineract as well, seems kind of really dumb, to me.
> Perhaps in the future we can figure out the problem above, and switch to the 
> simpler more standard programming model everywhere.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to