Details

    • Type: New Feature New Feature
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: framework
    • Labels:
      None
    • Environment:

      Windows, Ubuntu Linux

      Description

      This is a new stub for new web service style that use a normal style (not hash map [key/value]).

      [[ Installation ]]

      • Extract webservice.zip file (attached file) to hot-deploy directory of OFBiz framework
      • run ant task for apply patch in webservice directory with:
        ant reapply-ofbiz-patches

      [[ Features ]]

      1.) New classes

      There is new important class

      org.ofbiz.webapp.webservice.event.WebServiceEventHandler

      which corresponds to earlier

      org.ofbiz.webapp.event.SOAPEventHandler

      but tries to support document style web services using
      SOAP with XML-format, or REST with XML and JSON-formats.
      This handler class uses other class:

      org.ofbiz.service.webservice.WebServiceModel

      which wraps inside class

      org.ofbiz.service.ModelService

      and contains support for WSDL-generation, WADL-generation
      and conversion between Java Maps and XML-object models.
      WSDL=Web Service Definition Language for SOAP-interface
      http://www.w3.org/TR/wsdl
      WADL=Web Application Description Language for REST-interface
      http://www.w3.org/Submission/wadl/

      There is another new important class

      org.ofbiz.service.webservice.engine.WebServiceClientEngine

      which corresponds to earlier

      org.ofbiz.service.engine.SOAPClientEngine

      but tries to support document style web services using
      SOAP with XML-format. Web services can be called using
      their WSDL-document or messages can be specified in
      services.xml without using WSDL-document. engine-attribute
      in services description is set to "webservice". Location
      of WSDL-document is given in attribute wsdlLocation or
      it can be left out if messages are described with attribute-
      definitions. Name of service in WSDL is given in
      attribute webServiceName and name of operation to be
      invoked in attribute invoke. One service-definition is
      needed for one web service-operation pair.
      Example of web service definitions are in file:
      framework/common/servicedef/services_test.xml
      This engine class uses other class:

      org.ofbiz.service.webservice.WebServiceClientModel

      which extends org.ofbiz.service.webservice.WebServiceModel

      and contains support for filling attribute definitions
      in org.ofbiz.service.ModelService from WSDL-document.

      2.) Service definitions

      Web service interface can be used only if service definition
      file services.xml is completed with additional definitions.
      Schema of this file is extended.

      attribute-elements can have nested attribute elements
      which describe structure of Java maps and lists.
      If attribute has type Map, it should have nested attributes
      which describe contents of this map.
      If attribute has type List, it should have nested attributes
      which describe element contents of this list.
      If List has simple elements, there must be only one
      nested attribute, which describes element.
      If List has element which is map or other list, there
      must be one nested attribute stating that the element
      is Map or List, and then this attribute should have
      nested attributes describing structure of Map or
      structure of list element.
      There are also two new modes for attributes
      ERROR which means that attribute is responded as error message
      OUTERROR which means that attribute is responded as error
      or as success message
      These modes are needed for web services to describe
      which parameters will go to detail-elements of SOAP Fault response
      or REST error messages. Also in WSDL- and WADL-files will be
      generated XML-schema for general response messages.

      File framework\webapp\servicedef\services_test.xml
      can be used as example of attribute definitions.
      This file is used in unit tests of web service interface.

      3.) Web service requests

      In REST-services HTTP GET-method is used in services whose
      name start with words "find" or "get". These services should
      have input parameters in one level, so that they can be
      given as query parameters in URL. HTTP DELETE-method is used
      with services whose name start with word "remove". Other services
      are used with HTTP POST-method and PUT-method. Service must
      look itself for method name POST or PUT, if it is required
      to operate differently in insert or update cases.

      List of links to all WSDL-documents can be requested with URL:

      /webtools/control/WebService?wsdl

      Specific WSDL-document is requested with URL:

      /webtools/control/WebService/<service name here>?wsdl

      SOAP web service is called with URL:

      /webtools/control/WebService

      Notice that no service name is added to URL. Operation
      name in request message specifies the service name.

      List of links to all WADL-documents can be requested with URL:

      /webtools/control/WebService?wadl

      Specific WADL-document is requested with URL:

      /webtools/control/WebService/<service name here>?wadl

      REST web service is called with URL:

      /webtools/control/WebService/<service name here>[?parameter=value...]

      REST web service with JSON-format is called with URL:

      /webtools/control/WebService/<service name here>?format=json[&parameter=value...]

      SOAP and REST web service requests are selected by
      request URL, where REST web service has appended
      service name in URL.

      4.) Unit tests

      Tests for web services

      org.ofbiz.webapp.webservice.test.WebServiceTests

      This has 14 different tests which are:
      1. Conversion of XML-object model to Map
      2. Conversion of Map to XML-object model
      3. Call SOAP-web service
      4. Call SOAP-web service which needs authorization
      5. Call SOAP-web service with wrong credentials
      6. Call SOAP-web service with wrong service name
      7. Call REST-web service
      8. Call REST-web service which needs authorization
      9. Call REST-web service with wrong credentials
      10. Call REST-web service with wrong service name
      11. Call REST-web service using JSON-format
      12. Call REST-web service which needs authorization using JSON-format
      13. Call REST-web service with wrong credentials using JSON-format
      14. Call REST-web service with wrong service name using JSON-format

      Junit test suite definitions are in file
      framework/webapp/testdef/webservicetests.xml

      These unit tests use test service in class
      org.ofbiz.webapp.webservice.test.WebServiceTestServices
      Service definitions are in file
      framework\webapp\servicedef\services_test.xml

      Unit tests for web service interface can be run with command:

      ant run-single-test-suite -Dtest.component=webapp -Dtest.suiteName=webservicetests

      Tests for web service client

      org.ofbiz.service.webservice.test.WebServiceClientTests

      This has 4 different tests which are:

      1. Call SOAP-web service
      2. Call SOAP-web service which needs authorization
      3. Call SOAP-web service with wrong credentials
      4. Call SOAP-web service without WSDL-document using service definitions

      Junit test suite definitions are in file
      framework/service/testdef/webserviceclienttests.xml

      These tests use same test services as tests for web services.

      Unit tests for web service client can be run with command:

      ant run-single-test-suite -Dtest.component=service -Dtest.suiteName=webserviceclienttests

      Created By: Joonas Keturi

      1. ASF.LICENSE.NOT.GRANTED--webui empty UI.jpg
        19 kB
        Jacques Le Roux
      2. webservice.tar.bz2
        3.69 MB
        Joonas Keturi
      3. webui.png
        77 kB
        Joonas Keturi
      4. webui.tar.bz2
        4.91 MB
        Joonas Keturi

        Issue Links

          Activity

          Chatree Srichart created issue -
          Chatree Srichart made changes -
          Field Original Value New Value
          Attachment webservice.zip [ 12451202 ]
          Hans Bakker made changes -
          Assignee Hans Bakker [ hansbak ]
          Joonas Keturi made changes -
          Comment [ I would suggest that we either:

              * define a separate schema specifically for web services that serves as an extension to a standard service definition, i.e. you define a normal service and then in a separate file you extend its definition with the information required for it to function as a web service
              * or we add support to the service engine to support the additional schema information

          Obviously I prefer the latter, I think it would be a big win to be able to more clearly define ambiguous service attributes such as Maps. I'm really not very comfortable with adding elements and attributes to the service definition schema if those new pieces aren't actually supported by the service engine itself.

          Hopefully within the next couple of days I'll be able to take a closer look at the schema definition changes and provide some feedback on them, I've only really taken a glance so far.
          [ Show » ]
          Scott Gray added a comment - 09/Aug/10 05:58 PM Thanks Joonas, it does concern me a little though. Altering the standard service definition schema in a major way but then only supporting those changes via a single event handler seems likely to cause a lot of confusion for developers who aren't using web services. I would suggest that we either:

              * define a separate schema specifically for web services that serves as an extension to a standard service definition, i.e. you define a normal service and then in a separate file you extend its definition with the information required for it to function as a web service
              * or we add support to the service engine to support the additional schema information

          Obviously I prefer the latter, I think it would be a big win to be able to more clearly define ambiguous service attributes such as Maps. I'm really not very comfortable with adding elements and attributes to the service definition schema if those new pieces aren't actually supported by the service engine itself. Hopefully within the next couple of days I'll be able to take a closer look at the schema definition changes and provide some feedback on them, I've only really taken a glance so far.


          Second alternative looks better for me also. If you want, I can make changes to code so that parameters of local service invocations are checked also against nested attribute definitions. This will only have effect on validation of parameters, no new functionality will be introduced.
          ]
          Chatree Srichart made changes -
          Description This is a new stub for new web service style that use a normal style (not hash map [key/value]).

          [[ Installation ]]

          - Extract webservice.zip file (attached file) to hot-deploy directory of OFBiz framework
          - run ant task for apply patch in webservice directory with:
             ant reapply-ofbiz-patches

          [[ Features ]]

          1.) New classes
           
          There is new important class
           
          org.ofbiz.webapp.webservice.event.WebServiceEventHandler
           
          which corresponds to earlier
           
          org.ofbiz.webapp.event.SOAPEventHandler
           
          but tries to support document style web services using
          SOAP with XML-format, or REST with XML and JSON-formats.
          This handler class uses other class:
           
          org.ofbiz.webapp.webservice.WebServiceModel
           
          which wraps inside class
           
          org.ofbiz.service.ModelService
           
          and contains support for WSDL-generation, WADL-generation
          and conversion between Java Maps and XML-object models.
          WSDL=Web Service Definition Language for SOAP-interface
          http://www.w3.org/TR/wsdl
          WADL=Web Application Description Language for REST-interface
          http://www.w3.org/Submission/wadl/
           
          2.) Service definitions
           
          Web service interface can be used only if service definition
          file services.xml is completed with additional definitions.
          Schema of this file is extended.
           
          attribute-elements can have nested attribute elements
          which describe structure of Java maps and lists.
          If attribute has type Map, it should have nested attributes
          which describe contents of this map.
          If attribute has type List, it should have nested attributes
          which describe element contents of this list.
          If List has simple elements, there must be only one
          nested attribute, which describes element.
          If List has element which is map or other list, there
          must be one nested attribute stating that the element
          is Map or List, and then this attribute should have
          nested attributes describing structure of Map or
          structure of list element.
          There are also two new modes for attributes
          ERROR which means that attribute is responded as error message
          OUTERROR which means that attribute is responded as error
           or as success message
          These modes are needed for web services to describe
          which parameters will go to detail-elements of SOAP Fault response
          or REST error messages. Also in WSDL- and WADL-files will be
          generated XML-schema for general response messages.
           
          File framework\webapp\servicedef\services_test.xml
          can be used as example of attribute definitions.
          This file is used in unit tests of web service interface.
           
          3.) Web service requests
           
          In REST-services HTTP GET-method is used in services whose
          name start with words "find" or "get". These services should
          have input parameters in one level, so that they can be
          given as query parameters in URL. HTTP DELETE-method is used
          with services whose name start with word "remove". Other services
          are used with HTTP POST-method and PUT-method. Service must
          look itself for method name POST or PUT, if it is required
          to operate differently in insert or update cases.
           
          List of links to all WSDL-documents can be requested with URL:
           
          /webtools/control/WebService?wsdl
           
          Specific WSDL-document is requested with URL:
           
          /webtools/control/WebService/<service name here>?wsdl
           
          SOAP web service is called with URL:
           
          /webtools/control/WebService
           
          Notice that no service name is added to URL. Operation
          name in request message specifies the service name.
           
          List of links to all WADL-documents can be requested with URL:
           
          /webtools/control/WebService?wadl
           
          Specific WADL-document is requested with URL:
           
          /webtools/control/WebService/<service name here>?wadl
           
          REST web service is called with URL:
           
          /webtools/control/WebService/<service name here>
           
          SOAP and REST web service requests are selected by
          request URL, where REST web service has appended
          service name in URL.
           
          4.) Unit tests
           
          org.ofbiz.webapp.webservice.test.WebServiceTests
           
          This has 14 different tests which are:
          1. Conversion of XML-object model to Map
          2. Conversion of Map to XML-object model
          3. Call SOAP-web service
          4. Call SOAP-web service which needs authorization
          5. Call SOAP-web service with wrong credentials
          6. Call SOAP-web service with wrong service name
          7. Call REST-web service
          8. Call REST-web service which needs authorization
          9. Call REST-web service with wrong credentials
          10. Call REST-web service with wrong service name
          11. Call REST-web service using JSON-format
          12. Call REST-web service which needs authorization using JSON-format
          13. Call REST-web service with wrong credentials using JSON-format
          14. Call REST-web service with wrong service name using JSON-format
           
          These unit tests use test service in class
          org.ofbiz.webapp.webservice.test.WebServiceTestServices
          Service definitions are in file
          framework\webapp\servicedef\services_test.xml
           
          Unit tests for web service interface can be run with command:
           
          ant run-single-test-suite -Dtest.component=webapp -Dtest.suiteName=webservicetests

          Created By: Joonas Keturi
          This is a new stub for new web service style that use a normal style (not hash map [key/value]).

          [[ Installation ]]

          - Extract webservice.zip file (attached file) to hot-deploy directory of OFBiz framework
          - run ant task for apply patch in webservice directory with:
             ant reapply-ofbiz-patches

          [[ Features ]]

          1.) New classes



          There is new important class



          org.ofbiz.webapp.webservice.event.WebServiceEventHandler



          which corresponds to earlier



          org.ofbiz.webapp.event.SOAPEventHandler



          but tries to support document style web services using

          SOAP with XML-format, or REST with XML and JSON-formats.

          This handler class uses other class:



          org.ofbiz.service.webservice.WebServiceModel



          which wraps inside class



          org.ofbiz.service.ModelService



          and contains support for WSDL-generation, WADL-generation

          and conversion between Java Maps and XML-object models.

          WSDL=Web Service Definition Language for SOAP-interface

          http://www.w3.org/TR/wsdl

          WADL=Web Application Description Language for REST-interface

          http://www.w3.org/Submission/wadl/



          There is another new important class



          org.ofbiz.service.webservice.engine.WebServiceClientEngine



          which corresponds to earlier



          org.ofbiz.service.engine.SOAPClientEngine



          but tries to support document style web services using

          SOAP with XML-format. Web services can be called using

          their WSDL-document or messages can be specified in

          services.xml without using WSDL-document. engine-attribute

          in services description is set to "webservice". Location

          of WSDL-document is given in attribute wsdlLocation or

          it can be left out if messages are described with attribute-

          definitions. Name of service in WSDL is given in

          attribute webServiceName and name of operation to be

          invoked in attribute invoke. One service-definition is

          needed for one web service-operation pair.

          Example of web service definitions are in file:

          framework/common/servicedef/services_test.xml

          This engine class uses other class:



          org.ofbiz.service.webservice.WebServiceClientModel



          which extends org.ofbiz.service.webservice.WebServiceModel



          and contains support for filling attribute definitions

          in org.ofbiz.service.ModelService from WSDL-document.



          2.) Service definitions



          Web service interface can be used only if service definition

          file services.xml is completed with additional definitions.

          Schema of this file is extended.



          attribute-elements can have nested attribute elements

          which describe structure of Java maps and lists.

          If attribute has type Map, it should have nested attributes

          which describe contents of this map.

          If attribute has type List, it should have nested attributes

          which describe element contents of this list.

          If List has simple elements, there must be only one

          nested attribute, which describes element.

          If List has element which is map or other list, there

          must be one nested attribute stating that the element

          is Map or List, and then this attribute should have

          nested attributes describing structure of Map or

          structure of list element.

          There are also two new modes for attributes

          ERROR which means that attribute is responded as error message

          OUTERROR which means that attribute is responded as error

           or as success message

          These modes are needed for web services to describe

          which parameters will go to detail-elements of SOAP Fault response

          or REST error messages. Also in WSDL- and WADL-files will be

          generated XML-schema for general response messages.



          File framework\webapp\servicedef\services_test.xml

          can be used as example of attribute definitions.

          This file is used in unit tests of web service interface.



          3.) Web service requests



          In REST-services HTTP GET-method is used in services whose

          name start with words "find" or "get". These services should

          have input parameters in one level, so that they can be

          given as query parameters in URL. HTTP DELETE-method is used

          with services whose name start with word "remove". Other services

          are used with HTTP POST-method and PUT-method. Service must

          look itself for method name POST or PUT, if it is required

          to operate differently in insert or update cases.



          List of links to all WSDL-documents can be requested with URL:



          /webtools/control/WebService?wsdl



          Specific WSDL-document is requested with URL:



          /webtools/control/WebService/<service name here>?wsdl



          SOAP web service is called with URL:



          /webtools/control/WebService



          Notice that no service name is added to URL. Operation

          name in request message specifies the service name.



          List of links to all WADL-documents can be requested with URL:



          /webtools/control/WebService?wadl



          Specific WADL-document is requested with URL:



          /webtools/control/WebService/<service name here>?wadl



          REST web service is called with URL:



          /webtools/control/WebService/<service name here>[?parameter=value...]



          REST web service with JSON-format is called with URL:



          /webtools/control/WebService/<service name here>?format=json[&parameter=value...]



          SOAP and REST web service requests are selected by

          request URL, where REST web service has appended

          service name in URL.



          4.) Unit tests



          Tests for web services



          org.ofbiz.webapp.webservice.test.WebServiceTests



          This has 14 different tests which are:

          1. Conversion of XML-object model to Map

          2. Conversion of Map to XML-object model

          3. Call SOAP-web service

          4. Call SOAP-web service which needs authorization

          5. Call SOAP-web service with wrong credentials

          6. Call SOAP-web service with wrong service name

          7. Call REST-web service

          8. Call REST-web service which needs authorization

          9. Call REST-web service with wrong credentials

          10. Call REST-web service with wrong service name

          11. Call REST-web service using JSON-format

          12. Call REST-web service which needs authorization using JSON-format

          13. Call REST-web service with wrong credentials using JSON-format

          14. Call REST-web service with wrong service name using JSON-format



          Junit test suite definitions are in file

          framework/webapp/testdef/webservicetests.xml



          These unit tests use test service in class

          org.ofbiz.webapp.webservice.test.WebServiceTestServices

          Service definitions are in file

          framework\webapp\servicedef\services_test.xml



          Unit tests for web service interface can be run with command:



          ant run-single-test-suite -Dtest.component=webapp -Dtest.suiteName=webservicetests



          Tests for web service client



          org.ofbiz.service.webservice.test.WebServiceClientTests



          This has 4 different tests which are:



          1. Call SOAP-web service

          2. Call SOAP-web service which needs authorization

          3. Call SOAP-web service with wrong credentials

          4. Call SOAP-web service without WSDL-document using service definitions



          Junit test suite definitions are in file

          framework/service/testdef/webserviceclienttests.xml



          These tests use same test services as tests for web services.



          Unit tests for web service client can be run with command:



          ant run-single-test-suite -Dtest.component=service -Dtest.suiteName=webserviceclienttests

          Created By: Joonas Keturi
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12452355 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12451202 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12452355 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12452702 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12452702 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12453384 ]
          Chatree Srichart made changes -
          Description This is a new stub for new web service style that use a normal style (not hash map [key/value]).

          [[ Installation ]]

          - Extract webservice.zip file (attached file) to hot-deploy directory of OFBiz framework
          - run ant task for apply patch in webservice directory with:
             ant reapply-ofbiz-patches

          [[ Features ]]

          1.) New classes



          There is new important class



          org.ofbiz.webapp.webservice.event.WebServiceEventHandler



          which corresponds to earlier



          org.ofbiz.webapp.event.SOAPEventHandler



          but tries to support document style web services using

          SOAP with XML-format, or REST with XML and JSON-formats.

          This handler class uses other class:



          org.ofbiz.service.webservice.WebServiceModel



          which wraps inside class



          org.ofbiz.service.ModelService



          and contains support for WSDL-generation, WADL-generation

          and conversion between Java Maps and XML-object models.

          WSDL=Web Service Definition Language for SOAP-interface

          http://www.w3.org/TR/wsdl

          WADL=Web Application Description Language for REST-interface

          http://www.w3.org/Submission/wadl/



          There is another new important class



          org.ofbiz.service.webservice.engine.WebServiceClientEngine



          which corresponds to earlier



          org.ofbiz.service.engine.SOAPClientEngine



          but tries to support document style web services using

          SOAP with XML-format. Web services can be called using

          their WSDL-document or messages can be specified in

          services.xml without using WSDL-document. engine-attribute

          in services description is set to "webservice". Location

          of WSDL-document is given in attribute wsdlLocation or

          it can be left out if messages are described with attribute-

          definitions. Name of service in WSDL is given in

          attribute webServiceName and name of operation to be

          invoked in attribute invoke. One service-definition is

          needed for one web service-operation pair.

          Example of web service definitions are in file:

          framework/common/servicedef/services_test.xml

          This engine class uses other class:



          org.ofbiz.service.webservice.WebServiceClientModel



          which extends org.ofbiz.service.webservice.WebServiceModel



          and contains support for filling attribute definitions

          in org.ofbiz.service.ModelService from WSDL-document.



          2.) Service definitions



          Web service interface can be used only if service definition

          file services.xml is completed with additional definitions.

          Schema of this file is extended.



          attribute-elements can have nested attribute elements

          which describe structure of Java maps and lists.

          If attribute has type Map, it should have nested attributes

          which describe contents of this map.

          If attribute has type List, it should have nested attributes

          which describe element contents of this list.

          If List has simple elements, there must be only one

          nested attribute, which describes element.

          If List has element which is map or other list, there

          must be one nested attribute stating that the element

          is Map or List, and then this attribute should have

          nested attributes describing structure of Map or

          structure of list element.

          There are also two new modes for attributes

          ERROR which means that attribute is responded as error message

          OUTERROR which means that attribute is responded as error

           or as success message

          These modes are needed for web services to describe

          which parameters will go to detail-elements of SOAP Fault response

          or REST error messages. Also in WSDL- and WADL-files will be

          generated XML-schema for general response messages.



          File framework\webapp\servicedef\services_test.xml

          can be used as example of attribute definitions.

          This file is used in unit tests of web service interface.



          3.) Web service requests



          In REST-services HTTP GET-method is used in services whose

          name start with words "find" or "get". These services should

          have input parameters in one level, so that they can be

          given as query parameters in URL. HTTP DELETE-method is used

          with services whose name start with word "remove". Other services

          are used with HTTP POST-method and PUT-method. Service must

          look itself for method name POST or PUT, if it is required

          to operate differently in insert or update cases.



          List of links to all WSDL-documents can be requested with URL:



          /webtools/control/WebService?wsdl



          Specific WSDL-document is requested with URL:



          /webtools/control/WebService/<service name here>?wsdl



          SOAP web service is called with URL:



          /webtools/control/WebService



          Notice that no service name is added to URL. Operation

          name in request message specifies the service name.



          List of links to all WADL-documents can be requested with URL:



          /webtools/control/WebService?wadl



          Specific WADL-document is requested with URL:



          /webtools/control/WebService/<service name here>?wadl



          REST web service is called with URL:



          /webtools/control/WebService/<service name here>[?parameter=value...]



          REST web service with JSON-format is called with URL:



          /webtools/control/WebService/<service name here>?format=json[&parameter=value...]



          SOAP and REST web service requests are selected by

          request URL, where REST web service has appended

          service name in URL.



          4.) Unit tests



          Tests for web services



          org.ofbiz.webapp.webservice.test.WebServiceTests



          This has 14 different tests which are:

          1. Conversion of XML-object model to Map

          2. Conversion of Map to XML-object model

          3. Call SOAP-web service

          4. Call SOAP-web service which needs authorization

          5. Call SOAP-web service with wrong credentials

          6. Call SOAP-web service with wrong service name

          7. Call REST-web service

          8. Call REST-web service which needs authorization

          9. Call REST-web service with wrong credentials

          10. Call REST-web service with wrong service name

          11. Call REST-web service using JSON-format

          12. Call REST-web service which needs authorization using JSON-format

          13. Call REST-web service with wrong credentials using JSON-format

          14. Call REST-web service with wrong service name using JSON-format



          Junit test suite definitions are in file

          framework/webapp/testdef/webservicetests.xml



          These unit tests use test service in class

          org.ofbiz.webapp.webservice.test.WebServiceTestServices

          Service definitions are in file

          framework\webapp\servicedef\services_test.xml



          Unit tests for web service interface can be run with command:



          ant run-single-test-suite -Dtest.component=webapp -Dtest.suiteName=webservicetests



          Tests for web service client



          org.ofbiz.service.webservice.test.WebServiceClientTests



          This has 4 different tests which are:



          1. Call SOAP-web service

          2. Call SOAP-web service which needs authorization

          3. Call SOAP-web service with wrong credentials

          4. Call SOAP-web service without WSDL-document using service definitions



          Junit test suite definitions are in file

          framework/service/testdef/webserviceclienttests.xml



          These tests use same test services as tests for web services.



          Unit tests for web service client can be run with command:



          ant run-single-test-suite -Dtest.component=service -Dtest.suiteName=webserviceclienttests

          Created By: Joonas Keturi
          This is a new stub for new web service style that use a normal style (not hash map [key/value]).

          [[ Installation ]]

          - Extract webservice.zip file (attached file) to hot-deploy directory of OFBiz framework
          - run ant task for apply patch in webservice directory with:
             ant reapply-ofbiz-patches

          [[ Features ]]

          1.) New classes

          There is new important class

          org.ofbiz.webapp.webservice.event.WebServiceEventHandler

          which corresponds to earlier

          org.ofbiz.webapp.event.SOAPEventHandler

          but tries to support document style web services using
          SOAP with XML-format, or REST with XML and JSON-formats.
          This handler class uses other class:

          org.ofbiz.service.webservice.WebServiceModel

          which wraps inside class

          org.ofbiz.service.ModelService

          and contains support for WSDL-generation, WADL-generation
          and conversion between Java Maps and XML-object models.
          WSDL=Web Service Definition Language for SOAP-interface
          http://www.w3.org/TR/wsdl
          WADL=Web Application Description Language for REST-interface
          http://www.w3.org/Submission/wadl/

          There is another new important class

          org.ofbiz.service.webservice.engine.WebServiceClientEngine

          which corresponds to earlier

          org.ofbiz.service.engine.SOAPClientEngine

          but tries to support document style web services using
          SOAP with XML-format. Web services can be called using
          their WSDL-document or messages can be specified in
          services.xml without using WSDL-document. engine-attribute
          in services description is set to "webservice". Location
          of WSDL-document is given in attribute wsdlLocation or
          it can be left out if messages are described with attribute-
          definitions. Name of service in WSDL is given in
          attribute webServiceName and name of operation to be
          invoked in attribute invoke. One service-definition is
          needed for one web service-operation pair.
          Example of web service definitions are in file:
          framework/common/servicedef/services_test.xml
          This engine class uses other class:

          org.ofbiz.service.webservice.WebServiceClientModel

          which extends org.ofbiz.service.webservice.WebServiceModel

          and contains support for filling attribute definitions
          in org.ofbiz.service.ModelService from WSDL-document.

          2.) Service definitions

          Web service interface can be used only if service definition
          file services.xml is completed with additional definitions.
          Schema of this file is extended.

          attribute-elements can have nested attribute elements
          which describe structure of Java maps and lists.
          If attribute has type Map, it should have nested attributes
          which describe contents of this map.
          If attribute has type List, it should have nested attributes
          which describe element contents of this list.
          If List has simple elements, there must be only one
          nested attribute, which describes element.
          If List has element which is map or other list, there
          must be one nested attribute stating that the element
          is Map or List, and then this attribute should have
          nested attributes describing structure of Map or
          structure of list element.
          There are also two new modes for attributes
          ERROR which means that attribute is responded as error message
          OUTERROR which means that attribute is responded as error
           or as success message
          These modes are needed for web services to describe
          which parameters will go to detail-elements of SOAP Fault response
          or REST error messages. Also in WSDL- and WADL-files will be
          generated XML-schema for general response messages.

          File framework\webapp\servicedef\services_test.xml
          can be used as example of attribute definitions.
          This file is used in unit tests of web service interface.

          3.) Web service requests

          In REST-services HTTP GET-method is used in services whose
          name start with words "find" or "get". These services should
          have input parameters in one level, so that they can be
          given as query parameters in URL. HTTP DELETE-method is used
          with services whose name start with word "remove". Other services
          are used with HTTP POST-method and PUT-method. Service must
          look itself for method name POST or PUT, if it is required
          to operate differently in insert or update cases.

          List of links to all WSDL-documents can be requested with URL:

          /webtools/control/WebService?wsdl

          Specific WSDL-document is requested with URL:

          /webtools/control/WebService/<service name here>?wsdl

          SOAP web service is called with URL:

          /webtools/control/WebService

          Notice that no service name is added to URL. Operation
          name in request message specifies the service name.

          List of links to all WADL-documents can be requested with URL:

          /webtools/control/WebService?wadl

          Specific WADL-document is requested with URL:

          /webtools/control/WebService/<service name here>?wadl

          REST web service is called with URL:

          /webtools/control/WebService/<service name here>[?parameter=value...]

          REST web service with JSON-format is called with URL:

          /webtools/control/WebService/<service name here>?format=json[&parameter=value...]

          SOAP and REST web service requests are selected by
          request URL, where REST web service has appended
          service name in URL.

          4.) Unit tests

          Tests for web services

          org.ofbiz.webapp.webservice.test.WebServiceTests

          This has 14 different tests which are:
          1. Conversion of XML-object model to Map
          2. Conversion of Map to XML-object model
          3. Call SOAP-web service
          4. Call SOAP-web service which needs authorization
          5. Call SOAP-web service with wrong credentials
          6. Call SOAP-web service with wrong service name
          7. Call REST-web service
          8. Call REST-web service which needs authorization
          9. Call REST-web service with wrong credentials
          10. Call REST-web service with wrong service name
          11. Call REST-web service using JSON-format
          12. Call REST-web service which needs authorization using JSON-format
          13. Call REST-web service with wrong credentials using JSON-format
          14. Call REST-web service with wrong service name using JSON-format

          Junit test suite definitions are in file
          framework/webapp/testdef/webservicetests.xml

          These unit tests use test service in class
          org.ofbiz.webapp.webservice.test.WebServiceTestServices
          Service definitions are in file
          framework\webapp\servicedef\services_test.xml

          Unit tests for web service interface can be run with command:

          ant run-single-test-suite -Dtest.component=webapp -Dtest.suiteName=webservicetests

          Tests for web service client

          org.ofbiz.service.webservice.test.WebServiceClientTests

          This has 4 different tests which are:

          1. Call SOAP-web service
          2. Call SOAP-web service which needs authorization
          3. Call SOAP-web service with wrong credentials
          4. Call SOAP-web service without WSDL-document using service definitions

          Junit test suite definitions are in file
          framework/service/testdef/webserviceclienttests.xml

          These tests use same test services as tests for web services.

          Unit tests for web service client can be run with command:

          ant run-single-test-suite -Dtest.component=service -Dtest.suiteName=webserviceclienttests

          Created By: Joonas Keturi
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12453384 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12456261 ]
          Joonas Keturi made changes -
          Attachment webservice.tar.bz2 [ 12468558 ]
          Chatree Srichart made changes -
          Attachment webservice.zip [ 12456261 ]
          Joonas Keturi made changes -
          Attachment webui.tar.bz2 [ 12471484 ]
          Jacques Le Roux made changes -
          Attachment webui empty UI.jpg [ 12474115 ]
          Joonas Keturi made changes -
          Attachment webservice.tar.bz2 [ 12468558 ]
          Joonas Keturi made changes -
          Attachment webui.tar.bz2 [ 12471484 ]
          Joonas Keturi made changes -
          Attachment webui.png [ 12474203 ]
          Attachment webui.tar.bz2 [ 12474204 ]
          Attachment webservice.tar.bz2 [ 12474205 ]
          Joonas Keturi made changes -
          Attachment webservice.tar.bz2 [ 12493936 ]
          Joonas Keturi made changes -
          Attachment webservice.tar.bz2 [ 12493936 ]
          Joonas Keturi made changes -
          Attachment webservice.tar.bz2 [ 12474205 ]
          Joonas Keturi made changes -
          Attachment webservice.tar.bz2 [ 12493939 ]
          Hans Bakker made changes -
          Assignee Hans Bakker [ hansbak ]
          Hans Bakker made changes -
          Priority Major [ 3 ] Minor [ 4 ]
          Sharan Foga made changes -
          Sprint Bug Crush Event - 21/2/2015 [ 91 ]
          Sharan Foga made changes -
          Rank Ranked lower
          Sharan Foga made changes -
          Sprint Bug Crush Event - 21/2/2015 [ 91 ]
          Sharan Foga made changes -
          Rank Ranked higher
          Pierre Smits made changes -
          Link This issue relates to OFBIZ-4274 [ OFBIZ-4274 ]

            People

            • Assignee:
              Unassigned
              Reporter:
              Chatree Srichart
            • Votes:
              1 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:

                Development