[ https://issues.apache.org/jira/browse/OFBIZ-3877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12896487#action_12896487 ]
Scott Gray commented on OFBIZ-3877: ----------------------------------- Hi Joonas, Could you expand on "make almost any earlier service to operate through web service interface"? I don't know what web service interface means, I'm just talking about standard internal service execution using the LocalDispatcher. I get the feeling you are referring to service execution via the event handler introduced in the patch. > New Web Service Style > --------------------- > > Key: OFBIZ-3877 > URL: https://issues.apache.org/jira/browse/OFBIZ-3877 > Project: OFBiz > Issue Type: New Feature > Components: framework > Environment: Windows, Ubuntu Linux > Reporter: Chatree Srichart > Assignee: Hans Bakker > Attachments: webservice.zip > > > 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 message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.