[[archive(http://wiki.eclipse.org/Category:OTEquinox)]] == OT/Equinox == === Children of this node === [[SubWiki]] [[Image(ote.png, right, link=)]] === Overview === OT/Equinox is the integration of [wiki:OTJ OT/J] into the [http://www.eclipse.org/equinox/ Eclipse Equinox] framework. It can be used to develop and/or adapt * Eclipse plug-ins * RCP applications/products * arbitrary [wiki:'OSGi bundles'] while utilizing all of the features of OT/J. In the sequel, any mentioning of "bundles" could also be read as Eclipse "plug-in" if that is your focus. === Description === The initial publication about OT/Equinox is the [http://www.objectteams.org/publications/#TOOLS07b TOOLS'07 paper]. The central new concept is an OtEquinox/AspectBinding which is defined at the architecture level, connecting a [[otjld(1.1,team class)]] sitting in an aspect bundle to a base bundle. Such binding grants the team permissions to adapt base classes from that base bundle. Starting from version OTDT 1.2.0, OT/Equinox is provided as a regular [http://www.objectteams.org/distrib/otdt.html#features Eclipse feature] that can be installed into Eclipse using the regular mechanisms of Eclipse's p2 provisioning subsystem (successor of the former "update manager"). With the OT/Equinox feature installed, an Eclipse instance is able to run bundles written in [wiki:OTJ OT/J] and declaring [wiki:OtEquinox/AspectBinding AspectBindings]. With an [wiki:OtEquinox/AspectBinding AspectBinding] declared, a bundle may use [[otjld(2.1,playedBy)]], [[otjld(3,callout)]] and [[otjld(4,callin)]] to attach to classes/methods of the base plugin. This includes the options of [[otjld(3.4,decapsulation)]], while generally adhering to export/import rules of OSGi. In those rare cases where an aspect bundle needs access to a base class that is ''not'' exported from its bundle, an aspect bundle may declare a [wiki:OtEquinox/ConfigIni#ForcedExports forced export] to inject the required export into the base bundle. A forced export is declared as part of an [wiki:OtEquinox/AspectBinding AspectBinding] and must be confirmed either by a system-wide declaration in the file [wiki:OtEquinox/ConfigIni eclipse/configuration/config.ini], or using one of the options of [wiki:OtEquinox/AspectBindingNegotiation AspectBindingNegotiation].