You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stratos.apache.org by Dakshika Jayathilaka <da...@wso2.com> on 2014/06/23 02:26:21 UTC

Order on cartridge deployment JSON

Hi,

Do we have any specific order on this? here is my sample json

{
    "type": "mysql",
    "provider": "data",
    "host": "apachestratos.org",
    "displayName": "MySQL",
    "description": "MySQL Cartridge",
    "version": "5.5",
    "multiTenant": "false",
    "portMapping": [
    {
      "protocol": "http",
      "port": "80",
      "proxyPort": "8280"
    }
    ],
      "deployment": {
      },
      "iaasProvider": [
        {
          "type": "ec2",
          "imageId": "ap-southeast-1/ami-42297810",
          "maxInstanceLimit": "4",
          "property": [
            {
             "name": "instanceType",
             "value": "m1.medium"
            },
            {
             "name": "keyPair",
             "value": "manula"
            }
          ]
        }
      ],
      "loadBalancer": {
        "type": "lb",
        "property": {
          "name": "default.load.balancer",
          "value": "true"
        }
      }
}


I'm loading this content via python code, default python *json.load *change
above order according to key.

{"displayName":"MySQL","description":"MySQL Cartridge","deployment":{},"
multiTenant":"false","portMapping":[{"proxyPort":"
8280","protocol":"http","port":"80"}],"iaasProvider":[{"
maxInstanceLimit":"4","property":[{"name":"instanceType","value":"
RegionOne/2"},{"name":"keyPair","value":"mytest"}],"
type":"openstack","imageId":"RegionOne/2f9bdcb3-6a7c-4b31-
a978-713a08c84b3c"}],"host":"apachestratos.org","version":"
5.5","provider":"data","type":"mysql","loadBalancer":{"
property":{"name":"default.load.balancer","value":"true"},"type":"lb"}}

when i send reordered json via curl. i'm getting below error on Stratos.


[2014-06-22 13:54:50,905]  WARN
{org.apache.cxf.jaxrs.provider.AbstractJAXBProvider} -
 javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was
found starting with element 'displayName'. One of '{type}' is expected.]
 at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
 at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
 at
org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:234)
 at
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1288)
at
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1239)
 at
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:790)
 at
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:749)
at
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
 at
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:101)
 at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
 at
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
 at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
 at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
 at
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
 at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
 at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
 at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
 at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(


*Dakshika Jayathilaka*
Software Engineer
WSO2, Inc.
lean.enterprise.middleware
0771100911

Re: Order on cartridge deployment JSON

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Hi Dakshika,

Yes, this is a result of json validation that was added sometime back.
Please read the email thread with the subject "Validating Inputs to
REST API" on Stratos dev list for more information. Relevant JIRA can
be found in [1].

IMO, there shouldn't be a order for json elements. But current
validation schema for cartridge definition bean checks in a specific
sequence.

[1] https://issues.apache.org/jira/browse/STRATOS-466

Thanks.


On Mon, Jun 23, 2014 at 10:15 AM, Dakshika Jayathilaka
<da...@wso2.com> wrote:
> No.
>
> Seems it validate accordingly. Why do we have such implementation ? I think
> its need to handle by endpoint if json pass all necessary data into post
> chunk.
>
> Dakshika Jayathilaka
> Software Engineer
> WSO2, Inc.
> lean.enterprise.middleware
> 0771100911
>
>
> On Mon, Jun 23, 2014 at 3:42 AM, Dinesh Bandara <di...@wso2.com> wrote:
>>
>> Hi Dakshika,
>>
>> Have you deployed a cartridge with the display name "MySQL" earlier ?
>>
>>
>>
>>
>> On Mon, Jun 23, 2014 at 8:19 AM, Nirmal Fernando <ni...@gmail.com>
>> wrote:
>>>
>>> I think this happens after the introduction of json validators.
>>>
>>>
>>> On Mon, Jun 23, 2014 at 5:56 AM, Dakshika Jayathilaka <da...@wso2.com>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> Do we have any specific order on this? here is my sample json
>>>>
>>>> {
>>>>     "type": "mysql",
>>>>     "provider": "data",
>>>>     "host": "apachestratos.org",
>>>>     "displayName": "MySQL",
>>>>     "description": "MySQL Cartridge",
>>>>     "version": "5.5",
>>>>     "multiTenant": "false",
>>>>     "portMapping": [
>>>>     {
>>>>       "protocol": "http",
>>>>       "port": "80",
>>>>       "proxyPort": "8280"
>>>>     }
>>>>     ],
>>>>       "deployment": {
>>>>       },
>>>>       "iaasProvider": [
>>>>         {
>>>>           "type": "ec2",
>>>>           "imageId": "ap-southeast-1/ami-42297810",
>>>>           "maxInstanceLimit": "4",
>>>>           "property": [
>>>>             {
>>>>              "name": "instanceType",
>>>>              "value": "m1.medium"
>>>>             },
>>>>             {
>>>>              "name": "keyPair",
>>>>              "value": "manula"
>>>>             }
>>>>           ]
>>>>         }
>>>>       ],
>>>>       "loadBalancer": {
>>>>         "type": "lb",
>>>>         "property": {
>>>>           "name": "default.load.balancer",
>>>>           "value": "true"
>>>>         }
>>>>       }
>>>> }
>>>>
>>>>
>>>> I'm loading this content via python code, default python json.load
>>>> change above order according to key.
>>>>
>>>> {"displayName":"MySQL","description":"MySQL
>>>> Cartridge","deployment":{},"multiTenant":"false","portMapping":[{"proxyPort":"8280","protocol":"http","port":"80"}],"iaasProvider":[{"maxInstanceLimit":"4","property":[{"name":"instanceType","value":"RegionOne/2"},{"name":"keyPair","value":"mytest"}],"type":"openstack","imageId":"RegionOne/2f9bdcb3-6a7c-4b31-a978-713a08c84b3c"}],"host":"apachestratos.org","version":"5.5","provider":"data","type":"mysql","loadBalancer":{"property":{"name":"default.load.balancer","value":"true"},"type":"lb"}}
>>>>
>>>> when i send reordered json via curl. i'm getting below error on Stratos.
>>>>
>>>>
>>>> [2014-06-22 13:54:50,905]  WARN
>>>> {org.apache.cxf.jaxrs.provider.AbstractJAXBProvider} -
>>>> javax.xml.bind.UnmarshalException
>>>>  - with linked exception:
>>>> [org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content
>>>> was found starting with element 'displayName'. One of '{type}' is expected.]
>>>> at
>>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
>>>> at
>>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>>>> at
>>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>>>> at
>>>> org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:234)
>>>> at
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1288)
>>>> at
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1239)
>>>> at
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:790)
>>>> at
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:749)
>>>> at
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>>> at
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:101)
>>>> at
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>>>> at
>>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>>> at
>>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>>>> at
>>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>>>> at
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
>>>> at
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
>>>> at
>>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
>>>> at
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>>>> at
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>>>> at
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>> at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>> at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>> at
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>> at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>> at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>> at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(
>>>>
>>>>
>>>> Dakshika Jayathilaka
>>>> Software Engineer
>>>> WSO2, Inc.
>>>> lean.enterprise.middleware
>>>> 0771100911
>>>
>>>
>>>
>>>
>>> --
>>> Best Regards,
>>> Nirmal
>>>
>>> Nirmal Fernando.
>>> PPMC Member & Committer of Apache Stratos,
>>> Senior Software Engineer, WSO2 Inc.
>>>
>>> Blog: http://nirmalfdo.blogspot.com/
>>
>>
>>
>>
>> --
>> Dinesh Bandara
>> Software Engineer
>> WSO2 Inc.; http://wso2.com
>> lean.enterprise.middleware
>>
>



-- 
Akila Ravihansa Perera
Software Engineer
WSO2 Inc.
http://wso2.com

Phone: +94 77 64 154 38
Blog: http://ravihansa3000.blogspot.com

Re: Order on cartridge deployment JSON

Posted by Dakshika Jayathilaka <da...@wso2.com>.
No.

Seems it validate accordingly. Why do we have such implementation ? I think
its need to handle by endpoint if json pass all necessary data into post
chunk.

*Dakshika Jayathilaka*
Software Engineer
WSO2, Inc.
lean.enterprise.middleware
0771100911


On Mon, Jun 23, 2014 at 3:42 AM, Dinesh Bandara <di...@wso2.com> wrote:

> Hi Dakshika,
>
> Have you deployed a cartridge with the display name "MySQL" earlier ?
>
>
>
>
> On Mon, Jun 23, 2014 at 8:19 AM, Nirmal Fernando <ni...@gmail.com>
> wrote:
>
>> I think this happens after the introduction of json validators.
>>
>>
>> On Mon, Jun 23, 2014 at 5:56 AM, Dakshika Jayathilaka <da...@wso2.com>
>> wrote:
>>
>>> Hi,
>>>
>>> Do we have any specific order on this? here is my sample json
>>>
>>> {
>>>     "type": "mysql",
>>>     "provider": "data",
>>>     "host": "apachestratos.org",
>>>     "displayName": "MySQL",
>>>     "description": "MySQL Cartridge",
>>>     "version": "5.5",
>>>     "multiTenant": "false",
>>>     "portMapping": [
>>>     {
>>>       "protocol": "http",
>>>       "port": "80",
>>>       "proxyPort": "8280"
>>>     }
>>>     ],
>>>       "deployment": {
>>>       },
>>>       "iaasProvider": [
>>>         {
>>>           "type": "ec2",
>>>           "imageId": "ap-southeast-1/ami-42297810",
>>>           "maxInstanceLimit": "4",
>>>           "property": [
>>>             {
>>>              "name": "instanceType",
>>>              "value": "m1.medium"
>>>             },
>>>             {
>>>              "name": "keyPair",
>>>              "value": "manula"
>>>             }
>>>           ]
>>>         }
>>>       ],
>>>       "loadBalancer": {
>>>         "type": "lb",
>>>         "property": {
>>>           "name": "default.load.balancer",
>>>           "value": "true"
>>>         }
>>>       }
>>> }
>>>
>>>
>>> I'm loading this content via python code, default python *json.load *change
>>> above order according to key.
>>>
>>> {"displayName":"MySQL","description":"MySQL Cartridge","deployment":{},"
>>> multiTenant":"false","portMapping":[{"proxyPort":"
>>> 8280","protocol":"http","port":"80"}],"iaasProvider":[{"
>>> maxInstanceLimit":"4","property":[{"name":"instanceType","value":"
>>> RegionOne/2"},{"name":"keyPair","value":"mytest"}],"
>>> type":"openstack","imageId":"RegionOne/2f9bdcb3-6a7c-4b31-
>>> a978-713a08c84b3c"}],"host":"apachestratos.org","version":"
>>> 5.5","provider":"data","type":"mysql","loadBalancer":{"
>>> property":{"name":"default.load.balancer","value":"true"},"type":"lb"}}
>>>
>>> when i send reordered json via curl. i'm getting below error on Stratos.
>>>
>>>
>>> [2014-06-22 13:54:50,905]  WARN
>>> {org.apache.cxf.jaxrs.provider.AbstractJAXBProvider} -
>>>  javax.xml.bind.UnmarshalException
>>>  - with linked exception:
>>> [org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content
>>> was found starting with element 'displayName'. One of '{type}' is expected.]
>>>  at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
>>>  at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>>> at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>>>  at
>>> org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:234)
>>>  at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1288)
>>> at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1239)
>>>  at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:790)
>>>  at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:749)
>>> at
>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>>  at
>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:101)
>>>  at
>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>>> at
>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>>  at
>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>>>  at
>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>>> at
>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
>>>  at
>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
>>>  at
>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
>>> at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>>>  at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>>>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>>> at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>>>  at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>  at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>  at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>  at
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>  at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>  at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(
>>>
>>>
>>> *Dakshika Jayathilaka*
>>> Software Engineer
>>> WSO2, Inc.
>>> lean.enterprise.middleware
>>> 0771100911
>>>
>>
>>
>>
>> --
>> Best Regards,
>> Nirmal
>>
>> Nirmal Fernando.
>> PPMC Member & Committer of Apache Stratos,
>> Senior Software Engineer, WSO2 Inc.
>>
>> Blog: http://nirmalfdo.blogspot.com/
>>
>
>
>
> --
> *Dinesh Bandara*
> Software Engineer
> WSO2 Inc.; http://wso2.com
> lean.enterprise.middleware
>
>

Re: Order on cartridge deployment JSON

Posted by Dinesh Bandara <di...@wso2.com>.
Hi Dakshika,

Have you deployed a cartridge with the display name "MySQL" earlier ?




On Mon, Jun 23, 2014 at 8:19 AM, Nirmal Fernando <ni...@gmail.com>
wrote:

> I think this happens after the introduction of json validators.
>
>
> On Mon, Jun 23, 2014 at 5:56 AM, Dakshika Jayathilaka <da...@wso2.com>
> wrote:
>
>> Hi,
>>
>> Do we have any specific order on this? here is my sample json
>>
>> {
>>     "type": "mysql",
>>     "provider": "data",
>>     "host": "apachestratos.org",
>>     "displayName": "MySQL",
>>     "description": "MySQL Cartridge",
>>     "version": "5.5",
>>     "multiTenant": "false",
>>     "portMapping": [
>>     {
>>       "protocol": "http",
>>       "port": "80",
>>       "proxyPort": "8280"
>>     }
>>     ],
>>       "deployment": {
>>       },
>>       "iaasProvider": [
>>         {
>>           "type": "ec2",
>>           "imageId": "ap-southeast-1/ami-42297810",
>>           "maxInstanceLimit": "4",
>>           "property": [
>>             {
>>              "name": "instanceType",
>>              "value": "m1.medium"
>>             },
>>             {
>>              "name": "keyPair",
>>              "value": "manula"
>>             }
>>           ]
>>         }
>>       ],
>>       "loadBalancer": {
>>         "type": "lb",
>>         "property": {
>>           "name": "default.load.balancer",
>>           "value": "true"
>>         }
>>       }
>> }
>>
>>
>> I'm loading this content via python code, default python *json.load *change
>> above order according to key.
>>
>> {"displayName":"MySQL","description":"MySQL Cartridge","deployment":{},"
>> multiTenant":"false","portMapping":[{"proxyPort":"
>> 8280","protocol":"http","port":"80"}],"iaasProvider":[{"
>> maxInstanceLimit":"4","property":[{"name":"instanceType","value":"
>> RegionOne/2"},{"name":"keyPair","value":"mytest"}],"
>> type":"openstack","imageId":"RegionOne/2f9bdcb3-6a7c-4b31-
>> a978-713a08c84b3c"}],"host":"apachestratos.org","version":"
>> 5.5","provider":"data","type":"mysql","loadBalancer":{"
>> property":{"name":"default.load.balancer","value":"true"},"type":"lb"}}
>>
>> when i send reordered json via curl. i'm getting below error on Stratos.
>>
>>
>> [2014-06-22 13:54:50,905]  WARN
>> {org.apache.cxf.jaxrs.provider.AbstractJAXBProvider} -
>>  javax.xml.bind.UnmarshalException
>>  - with linked exception:
>> [org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content
>> was found starting with element 'displayName'. One of '{type}' is expected.]
>>  at
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
>>  at
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>> at
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>>  at
>> org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:234)
>>  at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1288)
>> at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1239)
>>  at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:790)
>>  at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:749)
>> at
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>  at
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:101)
>>  at
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>> at
>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>  at
>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>>  at
>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>> at
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
>>  at
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
>>  at
>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
>> at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>>  at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>> at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>  at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>  at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>  at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>  at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>  at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(
>>
>>
>> *Dakshika Jayathilaka*
>> Software Engineer
>> WSO2, Inc.
>> lean.enterprise.middleware
>> 0771100911
>>
>
>
>
> --
> Best Regards,
> Nirmal
>
> Nirmal Fernando.
> PPMC Member & Committer of Apache Stratos,
> Senior Software Engineer, WSO2 Inc.
>
> Blog: http://nirmalfdo.blogspot.com/
>



-- 
*Dinesh Bandara*
Software Engineer
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware

Re: Order on cartridge deployment JSON

Posted by Nirmal Fernando <ni...@gmail.com>.
I think this happens after the introduction of json validators.


On Mon, Jun 23, 2014 at 5:56 AM, Dakshika Jayathilaka <da...@wso2.com>
wrote:

> Hi,
>
> Do we have any specific order on this? here is my sample json
>
> {
>     "type": "mysql",
>     "provider": "data",
>     "host": "apachestratos.org",
>     "displayName": "MySQL",
>     "description": "MySQL Cartridge",
>     "version": "5.5",
>     "multiTenant": "false",
>     "portMapping": [
>     {
>       "protocol": "http",
>       "port": "80",
>       "proxyPort": "8280"
>     }
>     ],
>       "deployment": {
>       },
>       "iaasProvider": [
>         {
>           "type": "ec2",
>           "imageId": "ap-southeast-1/ami-42297810",
>           "maxInstanceLimit": "4",
>           "property": [
>             {
>              "name": "instanceType",
>              "value": "m1.medium"
>             },
>             {
>              "name": "keyPair",
>              "value": "manula"
>             }
>           ]
>         }
>       ],
>       "loadBalancer": {
>         "type": "lb",
>         "property": {
>           "name": "default.load.balancer",
>           "value": "true"
>         }
>       }
> }
>
>
> I'm loading this content via python code, default python *json.load *change
> above order according to key.
>
> {"displayName":"MySQL","description":"MySQL Cartridge","deployment":{},"
> multiTenant":"false","portMapping":[{"proxyPort":"
> 8280","protocol":"http","port":"80"}],"iaasProvider":[{"
> maxInstanceLimit":"4","property":[{"name":"instanceType","value":"
> RegionOne/2"},{"name":"keyPair","value":"mytest"}],"
> type":"openstack","imageId":"RegionOne/2f9bdcb3-6a7c-4b31-
> a978-713a08c84b3c"}],"host":"apachestratos.org","version":"
> 5.5","provider":"data","type":"mysql","loadBalancer":{"
> property":{"name":"default.load.balancer","value":"true"},"type":"lb"}}
>
> when i send reordered json via curl. i'm getting below error on Stratos.
>
>
> [2014-06-22 13:54:50,905]  WARN
> {org.apache.cxf.jaxrs.provider.AbstractJAXBProvider} -
>  javax.xml.bind.UnmarshalException
>  - with linked exception:
> [org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content
> was found starting with element 'displayName'. One of '{type}' is expected.]
>  at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
>  at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>  at
> org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:234)
>  at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1288)
> at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1239)
>  at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:790)
>  at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:749)
> at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>  at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:101)
>  at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>  at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>  at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
>  at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
>  at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>  at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>  at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>  at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>  at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>  at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>  at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(
>
>
> *Dakshika Jayathilaka*
> Software Engineer
> WSO2, Inc.
> lean.enterprise.middleware
> 0771100911
>



-- 
Best Regards,
Nirmal

Nirmal Fernando.
PPMC Member & Committer of Apache Stratos,
Senior Software Engineer, WSO2 Inc.

Blog: http://nirmalfdo.blogspot.com/