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 <[email protected]> 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 <[email protected]> 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 <[email protected]> >> wrote: >>> >>> I think this happens after the introduction of json validators. >>> >>> >>> On Mon, Jun 23, 2014 at 5:56 AM, Dakshika Jayathilaka <[email protected]> >>> 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
