Hi Nirmal, Yes I already changed some endpoints which seems to work fine. I will test others and will update the thread.
On Wed, Nov 5, 2014 at 8:08 PM, Nirmal Fernando <[email protected]> wrote: > > > On Wed, Nov 5, 2014 at 3:31 PM, Udara Liyanage <[email protected]> wrote: > >> Hi, >> >> It works when I changed the Json provider to >> org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider >> >> >> <bean id="jsonProvider" >> class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"> >> > > Yes, this is what I meant. It's a limitation of the earlier library we > used. +1 from me for this change, but please test all operations. > > </bean> >> >> If we are using the above provider we do not need to specify >> serializeAsArray for any property as we have now. In addition it >> automatically remove the root element. I pasted the existing JsonProvider >> configurations below. >> >> <bean id="jsonProvider" >> class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> >> <property name="supportUnwrapped" value="true"/> >> <property name="serializeAsArray" value="true"/> >> <property name="arrayKeys"> >> <list> >> <value>partitions</value> >> <value>property</value> >> <value>hostNames</value> >> <value>memberMap</value> >> <value>portMap</value> >> <value>partitionGroup</value> >> <value>member</value> >> <value>hostNames</value> >> <value>portMappings</value> >> <value>volumes</value> >> <value>domains</value> >> <value>kubernetesHost</value> >> <value>cartridges</value> >> </list> >> </property> >> </bean> >> --> >> >> >> On Wed, Nov 5, 2014 at 7:53 PM, Nirmal Fernando <[email protected]> >> wrote: >> >>> May be we have to use element wrapper; @XmlElementWrapper(name= >>> "cartridges") >>> >>> http://blog.bdoughan.com/2010/09/jaxb-collection-properties.html >>> >>> On Wed, Nov 5, 2014 at 3:11 PM, Udara Liyanage <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> You can find it [1]. Please note that other bean classes have public >>>> variables which are set when converting to a pojo. This bean as private >>>> variables and public getters and setters. >>>> >>>> [1] >>>> https://github.com/apache/stratos/blob/docker-grouping-merge/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/grouping/definitions/ServiceGroupDefinition.java >>>> >>>> On Wed, Nov 5, 2014 at 7:34 PM, Nirmal Fernando <[email protected] >>>> > wrote: >>>> >>>>> Can you point to the relevant rest endpoint bean ? >>>>> >>>>> On Wed, Nov 5, 2014 at 2:52 PM, Udara Liyanage <[email protected]> wrote: >>>>> >>>>>> Hi Nirmal, >>>>>> >>>>>> But it works in get deployment policy endpoint, so it can not be a >>>>>> limitation ? >>>>>> >>>>>> curl -X GET -H "Content-Type: application/json" -d >>>>>> @'app-php-only.json' -k -u admin:admin >>>>>> https://localhost:9443/stratos/admin/policy/deployment/economyDeploymentPolicy >>>>>> | python -m json.tool >>>>>> % Total % Received % Xferd Average Speed Time Time >>>>>> Time Current >>>>>> Dload Upload Total Spent >>>>>> Left Speed >>>>>> 100 908 0 353 100 555 5364 8434 --:--:-- --:--:-- >>>>>> --:--:-- 8538 >>>>>> { >>>>>> "deploymentPolicy": { >>>>>> "id": "economyDeploymentPolicy", >>>>>> "partitionGroup": [ >>>>>> { >>>>>> "id": "ec2", >>>>>> *"partition": [* >>>>>> * {* >>>>>> * "id": "AWSEC2AsiaPacificPartition1",* >>>>>> * "isPublic": false,* >>>>>> * "partitionMax": 3,* >>>>>> * "partitionMin": 1,* >>>>>> * "property": [* >>>>>> * {* >>>>>> * "name": "region",* >>>>>> * "value": "ap-southeast-1"* >>>>>> * },* >>>>>> * {* >>>>>> * "name": "zone",* >>>>>> * "value": "ap-southeast-1a"* >>>>>> * }* >>>>>> * ],* >>>>>> * "provider": "ec2"* >>>>>> * }* >>>>>> * ],* >>>>>> "partitionAlgo": "one-after-another" >>>>>> } >>>>>> ], >>>>>> "public": false >>>>>> } >>>>>> } >>>>>> >>>>>> >>>>>> On Wed, Nov 5, 2014 at 7:21 PM, Udara Liyanage <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> When I add the name of the variable to the cxf-servlet.xml as >>>>>>> serializeAsArray, >>>>>>> now cartridges are shown as arrays. >>>>>>> <value>cartridges</value> >>>>>>> >>>>>>> But we can't specify it for each variable. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Wed, Nov 5, 2014 at 6:35 PM, Udara Liyanage <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> When I execute the GET serviceGroup Stratos endpoint I get the >>>>>>>> folowing output in two different groups. Please note cartridges text >>>>>>>> in >>>>>>>> bold. When there are only one cartridge, it shows as a String >>>>>>>> (output1), >>>>>>>> when there are multiple cartridges it is shown as an array (output2). >>>>>>>> >>>>>>>> But when I convert the object to a json text, it shows as arrays >>>>>>>> even when there are single cartridge. >>>>>>>> >>>>>>>> The issue happens when the object is sent in response as below >>>>>>>> >>>>>>>> return Response.ok().entity(serviceGroupDefinition).build(); >>>>>>>> >>>>>>>> >>>>>>>> In the code carridges is set as a list. >>>>>>>> >>>>>>>> >>>>>>>> 1. List<String> cartridgesDef = new ArrayList<String>(Arrays. >>>>>>>> asList(cartridges)); >>>>>>>> 2. servicegroupDef.setCartridges(cartridgesDef); >>>>>>>> >>>>>>>> >>>>>>>> [1] suggested to set serializeAsArray as true in cxf-servlet.xml.xml, >>>>>>>> I tried doing it too. But same result. >>>>>>>> >>>>>>>> What is the reason for this? >>>>>>>> >>>>>>>> >>>>>>>> output [1] >>>>>>>> >>>>>>>> { >>>>>>>> "serviceGroup": [ >>>>>>>> { >>>>>>>> * "cartridges": "tomcat",* >>>>>>>> "dependencies": { >>>>>>>> "startupOrders": "group.group1,cartridge.tomcat", >>>>>>>> "terminationBehaviour": "terminate-dependents" >>>>>>>> }, >>>>>>>> "name": "group5", >>>>>>>> "subGroups": "group1" >>>>>>>> } >>>>>>>> ] >>>>>>>> } >>>>>>>> >>>>>>>> output [2] >>>>>>>> >>>>>>>> { >>>>>>>> "serviceGroup": { >>>>>>>> "cartridges": *[* >>>>>>>> * "tomcat",* >>>>>>>> * "php"* >>>>>>>> * ],* >>>>>>>> "dependencies": { >>>>>>>> "startupOrders": "group.group1,cartridge.tomcat", >>>>>>>> "terminationBehaviour": "terminate-dependents" >>>>>>>> }, >>>>>>>> "name": "group6", >>>>>>>> "subGroups": "group2" >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> [1] >>>>>>>> http://stackoverflow.com/questions/18918091/when-a-list-has-only-one-element-cxf-return-the-object-instead-a-js-array >>>>>>>> -- >>>>>>>> >>>>>>>> Udara Liyanage >>>>>>>> Software Engineer >>>>>>>> WSO2, Inc.: http://wso2.com >>>>>>>> lean. enterprise. middleware >>>>>>>> >>>>>>>> web: http://udaraliyanage.wordpress.com >>>>>>>> phone: +94 71 443 6897 >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> Udara Liyanage >>>>>>> Software Engineer >>>>>>> WSO2, Inc.: http://wso2.com >>>>>>> lean. enterprise. middleware >>>>>>> >>>>>>> web: http://udaraliyanage.wordpress.com >>>>>>> phone: +94 71 443 6897 >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Udara Liyanage >>>>>> Software Engineer >>>>>> WSO2, Inc.: http://wso2.com >>>>>> lean. enterprise. middleware >>>>>> >>>>>> web: http://udaraliyanage.wordpress.com >>>>>> phone: +94 71 443 6897 >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best Regards, >>>>> Nirmal >>>>> >>>>> Nirmal Fernando. >>>>> PPMC Member & Committer of Apache Stratos, >>>>> Senior Software Engineer, WSO2 Inc. >>>>> >>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> Udara Liyanage >>>> Software Engineer >>>> WSO2, Inc.: http://wso2.com >>>> lean. enterprise. middleware >>>> >>>> web: http://udaraliyanage.wordpress.com >>>> phone: +94 71 443 6897 >>>> >>> >>> >>> >>> -- >>> Best Regards, >>> Nirmal >>> >>> Nirmal Fernando. >>> PPMC Member & Committer of Apache Stratos, >>> Senior Software Engineer, WSO2 Inc. >>> >>> Blog: http://nirmalfdo.blogspot.com/ >>> >> >> >> >> -- >> >> Udara Liyanage >> Software Engineer >> WSO2, Inc.: http://wso2.com >> lean. enterprise. middleware >> >> web: http://udaraliyanage.wordpress.com >> phone: +94 71 443 6897 >> > > > > -- > Best Regards, > Nirmal > > Nirmal Fernando. > PPMC Member & Committer of Apache Stratos, > Senior Software Engineer, WSO2 Inc. > > Blog: http://nirmalfdo.blogspot.com/ > -- Udara Liyanage Software Engineer WSO2, Inc.: http://wso2.com lean. enterprise. middleware web: http://udaraliyanage.wordpress.com phone: +94 71 443 6897
