Hi Akila,
On Mon, Apr 28, 2014 at 1:24 PM, Akila Ravihansa Perera <[email protected]>wrote: > Hi Pradeep, > > I have some concerns regarding the schema. > > 1. In partition deployment, do we really need to make it mandatory to > include partitionMin and partitionMax? > IMO, minOccurs should be 0 for these two properties since this can be > overridden in the deployment definition > +1. Please go ahead and change > > 2. What is the need for having a sequence in properties definition? > For eg - In cartridge definition if the user don't enter the values in > the order that you have defined in the schema it won't validate. IMO, > we should use <xs:choice> instead of <xs:sequence> when describing > properties. > Sorry i did not get you. I used xs:all when definining property arrays. > > Thanks. > > On Wed, Apr 23, 2014 at 4:22 PM, Pradeep Fernando <[email protected]> > wrote: > > Hi devs, > > > > Now the API spits error messages irrespective of the backend exception. > It > > sends the JSON error message even if there is an Nullpointer in our > backend. > > Writing a exception mapper for throwable did the trick. > > > > Here is the schema I came up with for validating input. I derived it from > > the sample inputs i have. Please review it. Pretty sure there is space > for > > improvements particularly min occurs. > > > > > > <?xml version="1.0" encoding="UTF-8" ?> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:element name="partition"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="id" type="xs:string" minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="provider" type="xs:string" > minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="property" minOccurs="1" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:all> > > <xs:element name="name" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="value" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > <xs:element name="partitionMin" type="xs:int" > minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="partitionMax" type="xs:int" > minOccurs="1" > > maxOccurs="1" nillable="false"/> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > > > <xs:element name="autoscalePolicy"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="id" type="xs:string" minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="loadThresholds" minOccurs="1" > > maxOccurs="1" nillable="false"> > > <xs:complexType> > > <xs:all> > > <xs:element name="requestsInFlight" > > type="thresholdValues" minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="memoryConsumption" > > type="thresholdValues" minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="loadAverage" > > type="thresholdValues" minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > > > <xs:element name="deploymentPolicy"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="id" type="xs:string" maxOccurs="1" > > minOccurs="1" nillable="false"/> > > <xs:element name="partitionGroup"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="id" type="xs:string" > > maxOccurs="1" minOccurs="1" nillable="false"/> > > <xs:element name="partitionAlgo" > minOccurs="1" > > maxOccurs="1" nillable="false"> > > <xs:simpleType> > > <xs:restriction base="xs:string"> > > <xs:enumeration > > value="round-robin"/> > > <xs:enumeration > > value="one-after-another"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:element> > > <xs:element name="partition" minOccurs="1" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:all> > > <xs:element name="id" > > type="xs:string" maxOccurs="1" minOccurs="1" nillable="false"/> > > <xs:element name="partitionMax" > > type="xs:int" minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="partitionMin" > > type="xs:int" minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > > > <xs:element name="cartridgeDefinitionBean"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="type" type="xs:string" minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="provider" type="xs:string" > minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="host" type="xs:string" minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="displayName" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="description" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="version" type="xs:float" minOccurs="1" > > maxOccurs="1" nillable="false"/> > > <xs:element name="defaultAutoscalingPolicy" > type="xs:string" > > minOccurs="0" maxOccurs="1" nillable="false"/> > > <xs:element name="multiTenant" type="xs:boolean" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="portMapping" minOccurs="1" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:all> > > <xs:element name="protocol" type="xs:string" > > maxOccurs="1" minOccurs="1" nillable="false"/> > > <xs:element name="port" type="xs:int" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="proxyPort" type="xs:int" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > <xs:element name="iaasProvider" minOccurs="0" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="type" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="imageId" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="maxInstanceLimit" > > type="xs:int" minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="property" minOccurs="1" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:all> > > <xs:element name="name" > > type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="value" > > type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > <xs:element name="loadBalancer" minOccurs="0" > maxOccurs="1" > > nillable="true"> > > <xs:complexType> > > <xs:sequence> > > <xs:element name="type" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="property" minOccurs="1" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:all> > > <xs:element name="name" > > type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="value" > > type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > <xs:element name="property" minOccurs="0" > > maxOccurs="unbounded"> > > <xs:complexType> > > <xs:all> > > <xs:element name="name" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > <xs:element name="value" type="xs:string" > > minOccurs="1" maxOccurs="1" nillable="false"/> > > </xs:all> > > </xs:complexType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:element> > > > > <xs:complexType name="thresholdValues"> > > <xs:all> > > <xs:element name="average" type="xs:int" minOccurs="1" > > maxOccurs="1"/> > > <xs:element name="gradient" type="xs:float" minOccurs="1" > > maxOccurs="1"/> > > <xs:element name="secondDerivative" type="xs:float" > > minOccurs="1" maxOccurs="1"/> > > <xs:element name="scaleDownMarginOfGradient" type="xs:float" > > minOccurs="1" maxOccurs="1"/> > > <xs:element name="scaleDownMarginOfSecondDerivative" > > type="xs:float" minOccurs="1" maxOccurs="1"/> > > </xs:all> > > </xs:complexType> > > </xs:schema> > > > > > > > > -- > Akila Ravihansa Perera > Software Engineer > WSO2 Inc. > http://wso2.com > > Phone: +94 77 64 154 38 > Blog: http://ravihansa3000.blogspot.com > -- Pradeep Fernando. http://pradeepfernando.blogspot.com/
