This page contains an architecture overview of TEA along with a description of each component.
TEA is built up of various building blocks depending on each other. The image shows a layer model of the TEA architecture. These are the components (more thorough description below):
CleanBuildAllProjectsTaskChain can be used out of the box to build any workspace containing plug-in projects. Note that the default implementation ignores Package-Import dependencies between bundles though.
TEA Core contains support for basic Task and TaskChain concepts. These are the classes and areas clients using TEA will most likely get in touch, or can use as starting points. Note that a lot of those classes contain nested annotations related directly to that class/interface.
org.eclipse.tea.core.TaskExecutionContext: All Tasks need to be added to an execution context by a TaskChain implementation
org.eclipse.tea.core.services.TaskChain: Service interface that needs to be implemented by all TaskChains. Note that all TaskChains must be registered as OSGi service to be picked up by TEA. The easiest way to achieve this is to use declarative services through the
org.eclipse.tea.core.annotations: Relevant for implementing TaskChains mostly.
org.eclipse.tea.core.services.TaskingLifeCycleListener: Allows to react to general Task and TaskChain related events.
org.eclipse.tea.core.services.TaskingHeadlessLifeCycle: Allows to react to events relevant only for headless execution
org.eclipse.tea.core.annotations.lifecycle: Relevant for implementing lifecycle extensions which can react to TEA events in the system.
org.eclipse.tea.core.services.TaskingConfigurationExtension: Service interface to be implemented by all configuration extensions. A configuration extension is a POJO that is available for injection with all annotated fields automatically prefilled from either a headless.properties file or the Eclipse preferences of the used Eclipse (headless.properties has precedence if present).
org.eclipse.tea.core.services.TaskingStatisticsContribution: Allows to contribute additional data to statistics that are reported (if configured) to a specific server. Statistics are reported by POSTing (HTTP) statistics as JSON serialized objects.
org.eclipse.tea.core.services.TaskingLog: The destination for all log messages that Task implementations wish to write. The output is redirected either to stdout in the headless case or the Tasking Console in the Eclipse Console View when used in the IDE
org.eclipse.tea.core.services.TaskProgressTracker: Allows to explicitly influence progress reporting as well as cancellation checks by Tasks. TEA defaults to estimating the progress of a Task based on historic execution times if TEA Core UI is available
TEA Core UI contains extended support for Task and TaskChain concepts related directly or indirectly to UI. For instance the headless application/product allows to access Eclipse UI bundles even without real UI (still requires an X11 display to be set though). These are the classes and areas clients using TEA will most likely get in touch, or can use as starting points. Note that a lot of those classes contain nested annotations related directly to that class/interface.
org.eclipse.tea.core.ui.annotations.TaskChainUiInit: a TaskChain may contain a method with this annotation to provide UI to the user in case the TaskChain is run from the IDE. Can be used to dynamically configure Tasks in the TaskChain