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):
CleanBuildAllProjects
TaskChain 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 implementationorg.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 @Component
annotationorg.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 executionorg.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 IDEorg.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 availableTEA 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 TaskChainorg.eclipse.tea.core.services.TaskingConfigurationExtension
implementations