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/
