Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EDT:Third Party Service Introduction
Contents
Introduction
Web service is an important web development technical. EGL also supports it. And with the help of EDT, you can easily build up your web service applications.
And also, there are lots of public 3rd party services provided by Google, Yahoo and many other companies. EGL can easily adopt there 3rd party services as well. Here we made an introduction of 3rd party services in EDT.
Create Record for 3rd Party Service
There are two protocols for response data. The XML data or JSON data. If the response data is XML structured, then you need to create the “Record from XML”. The JSON structured data use the “Record from JSON”. For the wizards of these two types are basically the same, we use the “Record from JSON” wizard as demo.
1. Open “New EGL Record” wizard by Right Click on Project/Package --> New --> Record.
2. Fill the EGL Record page of this wizard
The “Source folder” field filled with the EGLSource folder of the project you selected. If you want to change this field, just open the browser by clicking the “Browse…” button at the right of this field
The “Package” field should filled with the package you right click on. If you open this wizard by right clicking on project node, then the “Package” field would be empty. You can also browse the target package by clicking the “Browse…” button at the right of this field. Otherwise the record will be created to the default package.
In this demo, we use the “Record from JSON” wizard as demo. So select the “Record from JSON” template. Then click “Next”.
3. Fill the Records from JSON page
You will see three radio selections in this page. They are “Create from a URL”, “Create from a file” and “Create from a string”. For the third party services are published to the internet, we can get them from a URL. So we use the “Create from a URL” selection when creating record for third party services.
Select Create record from a URL. Input the third party REST service URL to the text field. Then click next, the record will be created automatically.
4. Check the Record Creation result
When you fill the right third party URL in last page, you should have this result page as the picture shows. The record in Preview TextArea is the third party record created automatically by wizard. The TextArea below shows all errors & warnings. You may check the details by these two information TextAreas. Then click “Finish” to end this wizard. You will find the record created in the target package of the target Source folder. Just open it by source editor to take a review.
Create Interface for 3rd Party Service
Here is a sample interface.
Interface IGeoName function search(query string in) returns(GeoNames) {@GetRest {uriTemplate="http://ws.geonames.org/search?q={query}", responseFormat=XML} }; function searchJSON(query string in) returns(GeoNames) {@GetRest {uriTemplate="http://ws.geonames.org/searchJSON?q={query}", responseFormat=JSON}}; End
There are @GetRest and @PostRest. It determined by the third party service you called. And the responseFormat is the XML/JSON issue we mentioned before.
The uriTemplate is the third party service URL. EGL use {} in this URL to link with the input params in interface input. In this sample, parameter “query” in interface declaration will link to the {query} in ruiTemplate.
The returns declaration defines the return type of this interface, the GeoNames in sample is the record we created in last section.
Bind resource for 3rd Party Service
For details of Resource Binding, see Resource Binding Introduction.
Notes: If you have set the uriTemplate field in interface declarations, then the “Base URI” field in Deployment Descriptor file can be empty. EDT will concat uriTemplate behind the Base URI as the final URL.
Call the 3rd Party Service
Call Service Function
function invokeService( e Event in) srvc_GeoName IGeoName?{@Resource{}}; if (serviceTypeCombo.getSelection() == 1) call srvc_GeoName.search("London") returning to handleReturn onexception Exceptionhandler; else call srvc_GeoName.searchJSON("London") returning to handleReturn onexception Exceptionhandler; end end
Handle Return Function
function handleReturn(resultRecord Geonames in) i int = 0; while (i<resultRecord.geoname.getSize()) i += 1; resultList.appendElement(resultRecord.geoname[i]); end end
Handle Exception Function
private function Exceptionhandler( exception AnyException in) handleException(); end