Java Client Library

Description

ABSTRACT
Implementation of a Java client library to simplify the implementation of the Symphony REST API through higher level constructs and services.

PROPOSAL
To create a common Java library that provides the following abstractions and features.

  • SymphonyClient interface that represents a single point of access or session to the Agent API/POD. This interface also provides access to both Symphony client API implementations and feature services the library provides.

  • Authentication helpers to simplify management of tokens and required headers.

  • REST API Client implementation(s) that integrate into library native classes. Provides an abstraction layer as REST API will evolve over time.

  • Feature services: Chat, Presence, Room. These services provide higher level functions that are common in IM communications. E,g, Manage active chat sessions, automatically create chat sessions without initiating, detect presence changes, listeners (callbacks) for events.

  • MessageML parser. DOM parser with some helper methods to convert into text and traverse doc. (JSOUP implementation)

  • Extendable

BACKGROUND
This contribution is a direct outcome of implementing the Symphony REST API while developing the Help BOT (). It became obvious that the REST API would not have all the features necessary to support a functional implementation where events and session management are critical. At the same time, other developers within my organization were asking for the "Symphony API's", so they could start to develop BOTs. The fear of many developers going through the learning curve and reproduction of these feature level capabilities forced the development of a shared library, which can now be shared with the community.

RATIONALE
Most modern unification collaboration networks maintain client SDK's to simplify the implementation of features. Examples are XMPP SMACK and Lync SDK. The hope is we can have a common set of Symphony client interfaces for Java to reduce the overhead and duplication of common requirements. These interfaces can be made agnostic to language implementation over time and a discussion should be conducted to start rationalizing this view.

CORE DEVELOPERS
Owner: Frank Tarsillo
Committers: Amit Joshi (Markit - New), Maurizio Pillitu

INITIAL GOALS

  • Complete first pass of basic client implementation

  • Document well defined interfaces and factories for extensions and consistency with other languages.

  • Look to gain support and additional committers from within community.

Current GIT: https://git.mdevlab.com/frank.tarsillo/symphonyoss-java-client

Assignee

Maurizio Pillitu

Reporter

Frank Tarsillo

Due date

None

Priority

Medium
Configure