Hi Manula,

Not yet committed. I have tool two paths to resolve this which I succeeded
in both paths.

1) I added below variables to the cxf-servelet.xml as below
                <value>cartridges</value>
                <value>startupOrders</value>
                <value>dependencies</value>

There I was able to get the expected outcome. However this is kind of
cumbersome since we have to add variable names of all lists to the
servlet.xml. This is not maintainable friendly way.

2) changing json provider
Please refer to the thread "Moving to JacksonJaxbJsonProvide json provider
in Stratos REST API".  This may have impact on the CLI funtions since root
element is not available when using this provider. Since the M4 is just
around the corner, it may be wiser to hold this method since release.

@Lakmal @Imesh what do you think?

On Thu, Nov 6, 2014 at 4:29 PM, Manula Chathurika Thantriwatte <
[email protected]> wrote:

> Hi Udara,
>
> Have you commit the changes.
>
> On Wed, Nov 5, 2014 at 8:16 PM, Udara Liyanage <[email protected]> wrote:
>
>> 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
>>
>
>
>
> --
> Regards,
> Manula Chathurika Thantriwatte
> Software Engineer
> WSO2 Inc. : http://wso2.com
> lean . enterprise . middleware
>
> email : [email protected] / [email protected]
> phone : +94 772492511
> blog : http://manulachathurika.blogspot.com/
>
>
>
>


-- 

Udara Liyanage
Software Engineer
WSO2, Inc.: http://wso2.com
lean. enterprise. middleware

web: http://udaraliyanage.wordpress.com
phone: +94 71 443 6897

Reply via email to