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