Thanks Dakshika! Pull request 152 is now merged to 4.1.0-test branch.

Thanks

On Sun, Dec 14, 2014 at 6:50 PM, Dakshika Jayathilaka <daksh...@wso2.com>
wrote:
>
> Hi Imesh,
>
> I have fixed the issues encountered after $(subject). please merge below PR
>
> PR: https://github.com/apache/stratos/pull/152
>
> Thank you,
>
> *Dakshika Jayathilaka*
> Software Engineer
> WSO2, Inc.
> lean.enterprise.middleware
> 0771100911
>
> On Sun, Dec 14, 2014 at 12:05 PM, Imesh Gunaratne <im...@apache.org>
> wrote:
>>
>> Thanks Udara! We have now resolved this with CXF JSON provider
>> configuration.
>> Thanks Dakshika, please let us know if you find any problems.
>>
>> On Sun, Dec 14, 2014 at 11:43 AM, Dakshika Jayathilaka <daksh...@wso2.com
>> > wrote:
>>>
>>> Hi Imesh,
>>>
>>> I'll check and update.
>>>
>>> Thank you,
>>>
>>> *Dakshika Jayathilaka*
>>> Software Engineer
>>> WSO2, Inc.
>>> lean.enterprise.middleware
>>> 0771100911
>>>
>>> On Sun, Dec 14, 2014 at 11:42 AM, Udara Liyanage <ud...@wso2.com> wrote:
>>>>
>>>> Hi Imesh,
>>>>
>>>> If we are switching to Jackson json provider(there is a discussion
>>>> previously)  this may be already resolved. It supports java collections.
>>>>
>>>>
>>>> Touched, not typed. Erroneous words are a feature, not a typo.
>>>> On Dec 14, 2014 11:32 AM, "Imesh Gunaratne" <im...@apache.org> wrote:
>>>>
>>>>> Hi Devs,
>>>>>
>>>>> All the REST API methods which return collection types have included a
>>>>> wrapper object in their response messages. This is according to the CXF
>>>>> JSON provider configuration.
>>>>>
>>>>> Example: GET Cartridges:
>>>>>
>>>>> {"*cartridges*":[{"category":"framework","description":"Apache
>>>>> Tomcat","displayName":"tomcat","host":"tomcat.apache.org
>>>>> ","multiTenant":false,"provider":"apache","public":false,"type":"tomcat","version":7}]}
>>>>>
>>>>> This becomes a problem for the CLI or for any other client that try to
>>>>> deserialize the JSON string to its corresponding Java object. The
>>>>> convention we had used to resolve this issue was to define wrapper classes
>>>>> for collection type responses:
>>>>>
>>>>>     private class CartridgeList {
>>>>>         private ArrayList<Cartridge> cartridges;
>>>>>
>>>>>         public ArrayList<Cartridge> getCartridges() {
>>>>>             return cartridges;
>>>>>         }
>>>>>
>>>>>         public void setCartridge(ArrayList<Cartridge> cartridges) {
>>>>>             this.cartridges = cartridges;
>>>>>         }
>>>>>
>>>>>         CartridgeList() {
>>>>>             cartridges = new ArrayList<Cartridge>();
>>>>>         }
>>>>>     }
>>>>>
>>>>> IMO this is an overhead when considering the amount of classes we have
>>>>> in the REST API domain model.
>>>>>
>>>>> As a solution to this problem I have now configured REST API to remove
>>>>> this element:
>>>>>
>>>>> <bean id="jsonProvider" 
>>>>> class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
>>>>>
>>>>>     ...
>>>>>     <property name="dropCollectionWrapperElement" value="true"/>
>>>>>
>>>>>     ...
>>>>> </bean>
>>>>>
>>>>>
>>>>> *New sample response:*
>>>>>
>>>>> [{"category":"framework","description":"Apache 
>>>>> Tomcat","displayName":"tomcat","host":"tomcat.apache.org","multiTenant":false,"provider":"apache","public":false,"type":"tomcat","version":7}]
>>>>>
>>>>> *Sample code to de-serialize the object:*
>>>>>
>>>>> Type listType = new TypeToken<ArrayList<CartridgeDefinitionBean>>() 
>>>>> {}.getType();
>>>>> List<CartridgeDefinitionBean> cartridgeList = 
>>>>> (List<CartridgeDefinitionBean>) 
>>>>> restClient.listEntity(ENDPOINT_LIST_CARTRIDGES,
>>>>>         listType, "cartridges");
>>>>>
>>>>>
>>>>> Dakshika: We might need to update the UI with this modification.
>>>>> Really sorry for the inconvenience that may cause.
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Imesh Gunaratne
>>>>>
>>>>> Technical Lead, WSO2
>>>>> Committer & PMC Member, Apache Stratos
>>>>>
>>>>
>>
>> --
>> Imesh Gunaratne
>>
>> Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>

-- 
Imesh Gunaratne

Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Reply via email to