Release Date: Saturday, November 26, 2016

Release Highlights

Change Log

New Feature

EAGLE-65 - Add a main method that launches the webserver and backing service in the same VM connected using loopback bus

Added a main method to webservice.App that launches the webserver and backing service in the same VM connected using loopback bus. Useful for initial local testing.

EAGLE-66 - Add additional capabilities in service model to define URL parameters and REST verb used to invoke service methods

Added capability to specify REST method in service model and automatically generate http request parameters from the InMessage of the Operation.
Nested entities cannot be supplied as query params since embedded fields do not support the createFromRawJson. Users would have to use POST method in these cases.

EAGLE-73 - Generate Eagle Service HTML Test Page

Added support to generate HTML Test page for the service - to be able to quickly test the service Apis.

EAGLE-87 - Provide injectable peer service clients for synchronous request-reply with peer service

This release makes injectable peer service clients available for (remote) handlers which enables synchronous request reply with the peer service.

Improvement

EAGLE-51 - Refactor client re-login logic to avoid duplicate code in all Client Apis

Non-functional refactor for code cleanup, efficiency and a step towards supporting zero garbage implementation. Upgrade to X 3.4.68 or higher required.

EAGLE-64 - Change Heartbeat request handler to Remote type

This release changes Eagle's internal heartbeat request handler to be a Remote handler since it does not use the repository/state.

EAGLE-74 - Generate AbstractWebApp and allow users to extend and customize behavior of the web service

Refactored web app functionality to generate AbstractWebApp and allow users to extend and customize behavior of the web service.

EAGLE-75 - Add exception handling in WebApp to return proper http response

Added exception handling in Web App to return proper http response.

EAGLE-78 - HTTP Server Lifecycle should follow app's lifecycle

Refactored the lifecycle of HTTP server, embedded by the service's web app's App.java, to follow the same lifecycle as the app itself.

EAGLE-80 - Auto document the generated REST API in an Eagle service

Eagle comments in the ADM and ASM models to be aggregated into the generated WebApp and integrated with a REST API documentation tool so that my comments eventually self document the REST API. This story should do the following:
Added support for documentation of an ASM model just like one can document an ADM model.
Enhanced ASM code generator to document the REST endpoints using documentation in the ADM and ASM models
Integrated with Swagger to auto-document and provide the ability to test the REST API

EAGLE-83 - Auto open service client

Prior to this release, a user had to invoke open() on an Eagle service client before issuing service requests. This story enhances the client to automatically invoke open() when the first service request is issued.

EAGLE-84 - Asynchronous invocation of request-reply service methods

Prior to this release, all service requests issued on an Eagle service client completed synchronously i.e. the thread invoking the request method blocks and waits for the response to come back before returning to the caller. This release implements the capability to do asynchronous request-reply. To perform asynchronous request-reply, the user would invoke the OperationRequestAsync method (newly generated in this release) which is the async request method corresponding to the synchronous OperationRequest method (generated prior to this release). The method would send the request and immediately return to the caller. To asynchronously receive the response for the request, the client should provide the object containing @EventHandler methods to handle the response messages to the Client constructor. This would result in the response messages being asynchronously dispatched to the registered handlers. The OperationRequest methods continue to be generated for synchronously request-reply invocation of service methods.

EAGLE-85 - Supply an AEP engine to a service client

Prior to this release, an Eagle service client creates its own AEP engine instance. This release adds the ability for a user of the service client to supply an AEP engine for it to use rather than create a new one.

Note: Although this functionality can be used by an end user, this is primarily for use by a peerEagle service to perform asynchronous request-reply with the the service

EAGLE-86 - Asynchronous Request-Reply between peer services

Prior to this release, two peer Eagle services could not perform request-reply with each other. This release implements the ability to do so. When a service is declared as peer of another service, this release will perform the following:

  • Automatically include the peer service's client in the service runtime
  • Instruct the peer service client to use the service's engine
  • Generate handlers for the peer service client's response messages
  • Generate injectable MessageSender instances for the peer service event and request messages