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.
Difference between revisions of "EDT:Accessing a service"
Line 1: | Line 1: | ||
− | You can access a service from a Rich UI application or (in the future) from code generated to Java. | + | You can access a service from a Rich UI application or (in the future) from code generated to Java. |
= EDT version .8 = | = EDT version .8 = | ||
Line 18: | Line 18: | ||
**By a variable that is specific to a kind of service binding and that provides service-access details directly. You might have retrieved details from the EGL deployment descriptor and then customized them; or you might have created the details from scratch, in your code. | **By a variable that is specific to a kind of service binding and that provides service-access details directly. You might have retrieved details from the EGL deployment descriptor and then customized them; or you might have created the details from scratch, in your code. | ||
− | If the '''call''' statement is in a Rich UI application, the statement identifies a callback function and can include an exception handler. If (in future) the call statement is for use in Java-generated code, the statement acts synchronously | + | If the '''call''' statement is in a Rich UI application, the statement identifies a callback function and can include an exception handler. If (in the future) the '''call''' statement is for use in Java-generated code, the statement acts synchronously and can identify an exception handler as well as a variable that receives the returned value. |
− | == Accessing a dedicated service (version .8) == | + | == Accessing a dedicated service (version .8) == |
<source lang="java"> | <source lang="java"> | ||
− | </source> | + | </source> |
− | == Accessing an EGL REST-RPC service (version .8) == | + | == Accessing an EGL REST-RPC service (version .8) == |
<source lang="java"> | <source lang="java"> | ||
− | </source> | + | </source> |
− | == Accessing a third-party REST service (version .8) == | + | == Accessing a third-party REST service (version .8) == |
<source lang="java"> | <source lang="java"> | ||
− | </source> | + | </source> |
− | == Accessing a called or service program on IBM i (version .8 only) == | + | == Accessing a called or service program on IBM i (version .8 only) == |
<source lang="java"> | <source lang="java"> | ||
− | </source> | + | </source> |
= EDT version .7 = | = EDT version .7 = | ||
Line 48: | Line 48: | ||
In EDT version .7, your task follows this pattern: declare a service-access variable and use it in a call statement. | In EDT version .7, your task follows this pattern: declare a service-access variable and use it in a call statement. | ||
− | == Accessing a dedicated service (version .7) == | + | == Accessing a dedicated service (version .7) == |
<source lang="java"> | <source lang="java"> | ||
Line 152: | Line 152: | ||
end | end | ||
end | end | ||
− | </source> | + | </source> |
− | == Accessing an EGL REST-RPC service (version .7) == | + | == Accessing an EGL REST-RPC service (version .7) == |
− | Access of an EGL REST-RPC function is similar to accessing a dedicated service, but typically involves coding the variable declaration to reference an entry in the EGL deployment descriptor. | + | Access of an EGL REST-RPC function is similar to accessing a dedicated service, but typically involves coding the variable declaration to reference an entry in the EGL deployment descriptor. |
For example, you might change the previous handler to reference a deployment descriptor entry named <code>myService</code>. You can change the related variable declaration in one of two ways: | For example, you might change the previous handler to reference a deployment descriptor entry named <code>myService</code>. You can change the related variable declaration in one of two ways: | ||
Line 166: | Line 166: | ||
myService MyServiceType?{@Resource{bindingKey="myService"}}; | myService MyServiceType?{@Resource{bindingKey="myService"}}; | ||
− | </source> | + | </source> |
− | You can demonstrate the access of a Service type under development only after you update two aspects of your deployment descriptor: Service Deployment and Resource Bindings. For details and a look at the version .8 code syntax, see [[EDT: | + | You can demonstrate the access of a Service type under development only after you update two aspects of your deployment descriptor: Service Deployment and Resource Bindings. For details and a look at the version .8 code syntax, see [[EDT:Resource Binding Services|Service bindings]]. |
− | To retrieve the details from the HTTP response, add a parameter of type IHTTP to the callback function: | + | To retrieve the details from the HTTP response, add a parameter of type IHTTP to the callback function: <source lang="java"> |
− | <source lang="java"> | + | |
function theCallBack(retResult decimal(4, 2) in, myHttp IHTTP in) | function theCallBack(retResult decimal(4, 2) in, myHttp IHTTP in) | ||
myResult.text = retResult; | myResult.text = retResult; | ||
Line 178: | Line 177: | ||
SysLib.writeStdOut(myHttp.getResponse().body); | SysLib.writeStdOut(myHttp.getResponse().body); | ||
end | end | ||
− | </source> | + | </source> |
− | == Accessing a third-party REST service (version .7) == | + | == Accessing a third-party REST service (version .7) == |
− | + | ||
− | + | ||
− | + | ||
+ | <br> <br><br> ♦ [[EDT:Code snippets|Code snippets main page]] <br> | ||
[[Category:EDT]] | [[Category:EDT]] |
Revision as of 19:28, 13 February 2012
You can access a service from a Rich UI application or (in the future) from code generated to Java.
Contents
EDT version .8
In EDT version .8, your task is to code a call statement such as this one:
call MyInterface.myOperation() using "binding.myService" returning to myCallBackFunction onException myExceptionHandler;
Your call statement typically has the following aspects:
- Invokes a specific operation by referring either to a function in a Service type or to a function prototype in an Interface type.
- Identifies service-access details in one of two ways:
- By a string or string-type variable that refers to a service binding in an EGL deployment descriptor.
- By a variable that is specific to a kind of service binding and that provides service-access details directly. You might have retrieved details from the EGL deployment descriptor and then customized them; or you might have created the details from scratch, in your code.
If the call statement is in a Rich UI application, the statement identifies a callback function and can include an exception handler. If (in the future) the call statement is for use in Java-generated code, the statement acts synchronously and can identify an exception handler as well as a variable that receives the returned value.
Accessing a dedicated service (version .8)
Accessing an EGL REST-RPC service (version .8)
Accessing a third-party REST service (version .8)
Accessing a called or service program on IBM i (version .8 only)
EDT version .7
In EDT version .7, your task follows this pattern: declare a service-access variable and use it in a call statement.
Accessing a dedicated service (version .7)
// 1. declare the service-access variable myService MyServiceType?{@dedicatedService} // 2. call the service call myService.theFunction() returning to theCallBack onException theExceptionHandler; /* * Example: create a new EGL project for * "Web 2.0 application with services". Add the * the Service type shown next to the server package, * and add the Handler type to the client package. * * Test the example in the Rich UI Preview tab * by typing valid input into the first text box; for example: * 5, 12, 4 */ // the file with a Service type package server; Service MyServiceType // variables and constants can be here function calculate(myScores Int[] in) returns (Decimal(4,2)) numberOfScores, i, mySum Int; numberOfScores = myScores.getSize(); for (i from 1 to numberOfScores by 1) mySum = myScores[i] + mySum; end return(mySum/numberOfScores); end end // the file with a Handler type package client; import server.MyServiceType; import org.eclipse.edt.rui.widgets.GridLayout; import org.eclipse.edt.rui.widgets.TextField; import org.eclipse.edt.rui.widgets.GridLayoutData; import dojo.widgets.DojoButton; import dojo.widgets.DojoTextField; handler MyHandler type RUIhandler{initialUI =[ui], onConstructionFunction = start, cssFile = "css/ProjectInEDT.7.css", title = "MyHandler"} ui GridLayout{columns = 3, rows = 4, cellPadding = 4, children =[myResult, myButton, scores]}; scores TextField{layoutData = new GridLayoutData{row = 2, column = 2}}; myButton DojoButton{layoutData = new GridLayoutData{row = 4, column = 2}, text = "Calculate", onClick ::= ui_onClick}; myResult DojoTextField{layoutData = new GridLayoutData{row = 4, column = 3}}; function start() end function theExceptionHandler(exp AnyException in) SysLib.writeStdOut(exp.messageID + " " + exp.message); if (exp isa ServiceInvocationException) SysLib.writeStdOut((exp as ServiceInvocationException).detail1); SysLib.writeStdOut((exp as ServiceInvocationException).detail2); SysLib.writeStdOut((exp as ServiceInvocationException).detail3); end end function theCallBack(retResult decimal(4, 2) in) myResult.text = retResult; end function ui_onClick(event Event in) inputLength int = scores.text.length(); myDelimiters string = ", "; myPosition int = 1; myToken string; myList int[]; while(myPosition < inputLength) myToken = StringLib.getNextToken(scores.text, myPosition, myDelimiters); if(myToken != null) myList.appendElement(myToken as int); end end myService MyServiceType?{@DedicatedService}; call myService.calculate(myList) returning to theCallBack onException theExceptionHandler; end end
Accessing an EGL REST-RPC service (version .7)
Access of an EGL REST-RPC function is similar to accessing a dedicated service, but typically involves coding the variable declaration to reference an entry in the EGL deployment descriptor.
For example, you might change the previous handler to reference a deployment descriptor entry named myService
. You can change the related variable declaration in one of two ways:
myService MyServiceType?{@Resource}; // or myService MyServiceType?{@Resource{bindingKey="myService"}};
You can demonstrate the access of a Service type under development only after you update two aspects of your deployment descriptor: Service Deployment and Resource Bindings. For details and a look at the version .8 code syntax, see Service bindings.
To retrieve the details from the HTTP response, add a parameter of type IHTTP to the callback function:function theCallBack(retResult decimal(4, 2) in, myHttp IHTTP in) myResult.text = retResult; // display the response in JSON format SysLib.writeStdOut(myHttp.getResponse().body); end