<data name="ResourcesSample" serviceNamespace="http://ws.wso2.org/dataservice/samples/resources_sample">
   <config id="default">
      <property name="driverClassName">org.h2.Driver</property>
      <property name="url">jdbc:h2:file:./samples/database/DATA_SERV_SAMP</property>
      <property name="username">wso2ds</property>
      <property name="password">wso2ds</property>
      <property name="minIdle">1</property>
      <property name="maxActive">10</property>
   </config>
   <query id="getProductByCodeQuery" useConfig="default">
      <sql>select productName, productLine, quantityInStock, buyPrice from Products where productCode=:productCode and buyPrice=:buyPrice</sql>
      <result element="Products" rowName="Product">
         <element column="productName" name="productName" xsdType="string"/>
         <element column="productLine" name="productLine" xsdType="string"/>
         <element column="quantityInStock" name="quantityInStock" xsdType="integer"/>
         <element column="buyPrice" name="buyPrice" xsdType="double"/>
      </result>
      <param name="productCode" ordinal="1" sqlType="STRING"/>
      <param name="buyPrice" sqlType="QUERY_STRING"/>
   </query>
   <query id="getProductsQuery" useConfig="default">
      <sql>select productCode, productName, productLine, quantityInStock, buyPrice from Products</sql>
      <result element="Products" rowName="Product">
         <element column="productCode" name="productCode" xsdType="string"/>
         <element column="productName" name="productName" xsdType="string"/>
         <element column="productLine" name="productLine" xsdType="string"/>
         <element column="quantityInStock" name="quantityInStock" xsdType="integer"/>
         <element column="buyPrice" name="buyPrice" xsdType="double"/>
      </result>
   </query>
   <query id="updateProductQuery" useConfig="default">
      <sql>update Products set productName=:productName, productLine=:productLine,quantityInStock=:quantityInStock,buyPrice=:buyPrice WHERE productCode=:productCode</sql>
      <param name="productCode" ordinal="5" sqlType="STRING"/>
      <param name="productName" ordinal="1" sqlType="STRING"/>
      <param name="productLine" ordinal="2" sqlType="STRING"/>
      <param name="quantityInStock" ordinal="3" sqlType="INTEGER"/>
      <param name="buyPrice" ordinal="4" sqlType="DOUBLE"/>
   </query>
   <query id="createProductQuery" useConfig="default">
      <sql>insert into Products (productCode, productName, productLine, quantityInStock, buyPrice) values (:productCode,:productName,:productLine,:quantityInStock,:buyPrice)</sql>
      <param name="productCode" ordinal="1" sqlType="STRING"/>
      <param name="productName" ordinal="2" sqlType="STRING"/>
      <param name="productLine" ordinal="3" sqlType="STRING"/>
      <param name="quantityInStock" ordinal="4" sqlType="INTEGER"/>
      <param name="buyPrice" ordinal="5" sqlType="DOUBLE"/>
   </query>
   <query id="deleteProductQuery" useConfig="default">
      <sql>delete Products where productCode=:productCode</sql>
      <param name="productCode" ordinal="1" sqlType="STRING"/>
   </query>
   <resource method="GET" path="products">
      <call-query href="getProductsQuery"/>
   </resource>
   <resource method="GET" path="product/{productCode}?buyPrice={buyPrice}">
      <call-query href="getProductByCodeQuery">
         <with-param name="productCode" query-param="productCode"/>
         <with-param name="buyPrice" query-param="buyPrice"/>
      </call-query>
   </resource>
</data>