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/

Reply via email to