Skip to main content

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.

Jump to: navigation, search

Sphinx/architecture

Sphinx provides a relatively large set of services and uses or extends a wide set of other Eclipse (modeling) components. Adopters may not need all of these services or required Eclipse components in their applications. Sometimes they even might be constraint to not using some of them. Sphinx is therefore based on an architecture that makes the dependencies wrt to required Eclipse components transparent and keeps them separated as much as possible. This architecture is also the basis for the structure of the features in which Sphinx plug-ins are delivered. Together, they make it happen that the individual parts of Sphinx to be used independently of each other.

Architecture

The following picture depicts the Sphinx architecture. It is constituted of 3 horizontal layers that form together the Sphinx core and several vertical slices on top of that. The core components provide essential modeling platform services that are commonly required and used by all other Sphinx components. They depend on a minimal set of existing Eclipse components. The vertical components provide individual modeling platform services that are independent of each other and typically based on specific additional exisiting Eclipse components.

SphinxArchitecture.png

Dependencies

The following table lists the dependencies of Sphinx components wrt existing Eclipse (modeling) components. Only directly required Eclipse components are listed (but not the Eclipse components being required by the directly required Eclipse components).

Component Dependencies
Core
  • Eclipse Platform
  • EMF
  • EMF Transaction
T.b.c. ...

Feature Structure

The structure of Sphinx features is basically a one-to-one representation of the architecture detailed above. For each component, Sphinx provides a set of features that contain the different pieces of a component, i.e., runtime, sources, documentation, examples, etc. Component features are hierarchically bundled up in container and root features. Adopters can freely choose which of these features they want to refer to and thus have full control over the Sphinx components and pieces that get included in their applications.

Conventions

The following table lists the different pieces of a Sphinx component along with a short description of their content and the name pattern for the corresponding features. The idea behind the name pattern is that feature names are supposed to always include the name of the Sphinx component that they represent and optionally indicate the principal required Eclipse component that they are based on or extend.

Feature type Description Name pattern
Runtime Binaries without source code org.eclipse.sphinx.<componentName>[.<requiredComponentName>]
Sources Source code for runtime binaries org.eclipse.sphinx.<componentName>[.<requiredComponentName>].source
Documentation Help content (Developer Guide, etc.) org.eclipse.sphinx.<componentName>[.<requiredComponentName>].doc
SDK Runtime + sources + documentation (but not examples) org.eclipse.sphinx.<componentName>[.<requiredComponentName>].sdk
Examples Example plug-ins including sources org.eclipse.sphinx.<componentName>[.<requiredComponentName>].examples
Test Utilities Utilities and support for JUnit-based unit and integration tests org.eclipse.sphinx.<componentName>[.<requiredComponentName>].testutils

Note: All components do not necessarily have to provide all of above mentioned feature types.

Root features

The root features are the primary deliverables of Sphinx and can be used to pull all Sphinx components at once. The following root features are provided:

  • org.eclipse.sphinx
  • org.eclipse.sphinx.sdk
  • org.eclipse.sphinx.examples
  • org.eclipse.sphinx.testutils

Component features

The table below lists the component features offered by Sphinx. They enable individual Sphinx components to be selected and included in applications. For the sake of keeping things easier to oversee, only the runtime features are indicated.


Vertikal components:

    • Navigator & Editor Sockets
      • Form Editor Socket


Component Features
Common Navigator Explorer Support
Form Editor Socket
GMF Editor Socket
Graphiti Editor Socket
Validation Runtime Extensions
Compare & Merge Integration
  • org.eclipse.sphinx.emf.compare
  • org.eclipse.sphinx.emf.compare.team.subversive
Xtend/Xpand Integration org.eclipse.sphinx.m2x.xtendxpand
Workspace Management org.eclipse.sphinx.emf.workspace
EMF Runtime Extensions org.eclipse.sphinx.emf
Eclipse Platform Extensions org.eclipse.sphinx.platform

Back to the top