Hi,

As a solution to the issue descussed in thread "Json response shows arrays
as string when there are single value", I tried changing json provider
to org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider  which was
earlier jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider

I tested cartridge, partition,policies, groups POST and GET operations with
the new provider and was successful.

*Advantages over existing provider*

1) support List without any configurations
Earlier when we have List in beans, we have to explicitly mention them in
cfx-servlet.xml as "serializeAsArray". With new provider, it is not needed.

<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>
2) Root element is automatically removed

*Disadvantages*

1) Similar to adding  [] brackets when it is a list in GET requests, we
have to put []  to list when we are doing POST even when there is one
element
for instance have a look at the partition.json

{
      "id": "temp",
      "provider": "ec2",
      "property":* [*
          {
                "name": "region",
                "value": "ap-southeast-1"
          }
      *]*,
      "partitionMin": "1",
      "partitionMax": "3"
}

2) Show null values too (There might be configurations to avoid this)

{
    "cartridges": [
        "mysql"
    ],
    "dependencies": {
        "startupOrders": [
 *           null*
        ],
        "terminationBehaviour": "terminate-none"
    },
    "name": "group111",
    "subGroups": [
*        null*
    ]
}



Do we move to the new provider at this time or wait till m4 is released?

-- 

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