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 >