Thanks Imesh.. ! *Dakshika Jayathilaka* Software Engineer WSO2, Inc. lean.enterprise.middleware 0771100911
On Sun, Dec 14, 2014 at 10:46 PM, Imesh Gunaratne <im...@apache.org> wrote: > > 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 >