adding schema files to stratos mock app and doing full round of testing
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/b0f7e046 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/b0f7e046 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/b0f7e046 Branch: refs/heads/master Commit: b0f7e0461ed581e70bfe713052b72f2ae02ecf8e Parents: e292423 Author: Pradeep Fernando <[email protected]> Authored: Thu Apr 24 11:32:36 2014 +0530 Committer: Pradeep Fernando <[email protected]> Committed: Thu Apr 24 11:32:36 2014 +0530 ---------------------------------------------------------------------- .../webapp/stratos-test/WEB-INF/cxf-servlet.xml | 41 +++++- .../stratos-test/WEB-INF/schemas/schema.xsd | 144 +++++++++++++++++++ .../main/webapp/stratos/WEB-INF/cxf-servlet.xml | 2 + .../webapp/stratos/WEB-INF/schemas/schema.xsd | 121 +++++++++++++--- 4 files changed, 288 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0f7e046/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml index 552cad7..2eae5ed 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml +++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/cxf-servlet.xml @@ -21,8 +21,10 @@ <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs" + xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> <jaxrs:server id="stratosAdmin" address="/"> @@ -31,14 +33,45 @@ </jaxrs:serviceBeans> <jaxrs:providers> - <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> - <property name="dropRootElement" value="true"/> - <property name="supportUnwrapped" value="true"/> - </bean>> + <ref bean="throwableExceptionHandler"/> + <ref bean="genericExceptionHandler"/> + <ref bean="badRequestExceptionHandler"/> + <ref bean="jsonProvider"/> <ref bean="exceptionHandler"/> </jaxrs:providers> </jaxrs:server> <bean id="stratosRestEndpointTestBean" class="org.apache.stratos.rest.endpoint.mock.StratosTestAdmin"/> <bean id="exceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.CustomExceptionMapper"/> + <bean id="badRequestExceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.BadRequestExceptionMapper"/> + <bean id="genericExceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.GenericExceptionMapper"/> + <bean id="throwableExceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.CustomThrowableExceptionMapper"/> + <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> + <property name="schemaHandler" ref="schemaHolder"/> + <property name="supportUnwrapped" value="true"/> + <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>partition</value> + <value>member</value> + <value>hostNames</value> + <value>portMappings</value> + <value>volumes</value> + </list> + </property> + </bean> + + <bean id="schemaHolder" class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler"> + <property name="schemas" ref="theSchemas"/> + </bean> + + <util:list id="theSchemas"> + <value>classpath:/WEB-INF/schemas/schema.xsd</value> + </util:list> </beans> http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0f7e046/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd new file mode 100644 index 0000000..23efb1d --- /dev/null +++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd @@ -0,0 +1,144 @@ +<?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> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0f7e046/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml index 624cb24..2695ccf 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml +++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml @@ -33,6 +33,7 @@ </jaxrs:serviceBeans> <jaxrs:providers> + <ref bean="throwableExceptionHandler"/> <ref bean="genericExceptionHandler"/> <ref bean="badRequestExceptionHandler"/> <ref bean="jsonProvider"/> @@ -52,6 +53,7 @@ <bean id="exceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.CustomExceptionMapper"/> <bean id="badRequestExceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.BadRequestExceptionMapper"/> <bean id="genericExceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.GenericExceptionMapper"/> + <bean id="throwableExceptionHandler" class="org.apache.stratos.rest.endpoint.handlers.CustomThrowableExceptionMapper"/> <!--The below config enables OAuth based authentication/authorization for REST API--> <bean id="OAuthFilter" class="org.apache.stratos.rest.endpoint.handlers.OAuthHandler"> <property name="password" value="admin"/> http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0f7e046/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd index cfd814a..23efb1d 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd +++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd @@ -7,10 +7,10 @@ <xs:element name="provider" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/> <xs:element name="property" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> - <xs:sequence> + <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:sequence> + </xs:all> </xs:complexType> </xs:element> <xs:element name="partitionMin" type="xs:int" minOccurs="1" maxOccurs="1" nillable="false"/> @@ -18,12 +18,20 @@ </xs:sequence> </xs:complexType> </xs:element> - + <xs:element name="autoscalePolicy"> <xs:complexType> <xs:sequence> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> + <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> @@ -31,8 +39,31 @@ <xs:element name="deploymentPolicy"> <xs:complexType> <xs:sequence> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> + <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> @@ -40,16 +71,74 @@ <xs:element name="cartridgeDefinitionBean"> <xs:complexType> <xs:sequence> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> - <xs:any processContents="lax"/> + <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> \ No newline at end of file
