AppsCube is framework conceived to support practitioners willing to develop applications interfacing and benefitting from gCube facilities. It included the following applications.
Application Service Layer (ASL) This is a framework acting as a middleware between the gCube lower level services and the presentation layer. Its activities scope differs from the one of the gCube Client Libraries in that it is designed not only to wrap gCube's complexity but also to provide higher complexity functionalities such as a Session Mechanism and aggregation of access to multiple services. Its architecture allows for extensibility of the framework for access to resources that fall under new functional categories or for provision of facilities that support multiple APIs based on various specifications. It includes (i) ASL Core, a set of facilities for session management, services discovery and invocation, authentication and authorisation, etc. and (ii) ASL Extensions, a set of facilities for performing service(s)-specific tasks, e.g., user profiles management, VRE management, data discovery, etc. ASL exploits both client libraries or services APIs to actually interface with the target service. The framework offers its facilities also via HTTP APIs.
Client Libraries Framework This is a set of "client libraries" development facilities. In fact, gCube includes a large number of client libraries, components that mediate access to system service from within client Java runtimes. The design and implementation of client libraries vary along with the semantics of target services and the technology stacks that the libraries use to interact with the services. However, the system requires them to provide a common set of functional capabilities and to adopt uniform patterns for the design of their APIs. The framework is layered across as a set of components including (i) common-clients is the top layer of the framework and comprises classes and interfaces that do not depend on particular client stacks; (ii) common-gcore-clients that adapts common-clients to the gCore stack, the very same JAX-RPC stack used by the dominant class of gCube services; and (iii) common-fw-clients that adapts common-clients to the Featherweight Stack. The key contribution of the framework comes in the form of ProxyDelegates, i.e., components that know how to make calls in a given mode on behalf of proxies. The idea is that the library defines explicit Call objects and its proxies pass them to the delegates for execution.
Featherweight Stack This is the collective name for a set of gCube components that enable interaction with gCube services. The FeatherWeight nature of the stack is in the footprint of its components, which is very small in terms of code, dependencies, and overall usage requirements. FeatherWeight Stack (FWS) is based on microlibs, i.e., Java libraries with: (a) a narrow functional focus, i.e., provide one and only one type of functionality; and (b) contained dependencies, i.e., depend only on other microlibs and the JDK. It includes the following components: (a) common-gcore-stubs: interacts with the JAX-WS runtime in the Java platform to synthesise dynamic local JAX-WS proxies of remote gCore services; (b) common-gcore-resources: contains an object-based implementation of the gCube Resource Model, i.e., a set of classes that represent known resource types; (c) discovery-client: provides a generic API to formulate and submit queries for resource descriptions; (d) ic-client: builds on the API of discovery-client to support resource discovery over the Information Collector service; (e) registry-publisher: an API to publish resources with the Registry service.
SmartGears This is a set of Java libraries that turn Servlet-based containers and applications into gCube resources, transparently. The vast majority of SmartGears libraries are "microlibs" and are shared with the FeatherWeight Stack. It includes the following microlibs: (a) common-smartgears: the main library in SmartGears, contains all the components that provide the management logic required to turn applications and containers into gCube resources; (b) common-events: a general-purpose, annotation-based eventing library used by the components in common-smartgears to sync with each other actions in a loosely-coupled manner; (c) common-validator: a general-purpose, annotation-based library for object state validation used in common-smartgears to validate configuration objects; (d) common-scope: a library with facilities related to gCube scope management; (e) common- gcore-resources: a library with the object bindings for the gCube resource model used in SmartGears to model application and container resource profiles; (f ) registry-publisher: a client library for the gCube Registry service used in common- smartgears to publish application and container profiles; (g) common-smartgears-app: a library that provides mechanisms to expose selected APIs in common-smartgears to gCube- aware applications.