38 lines
1.3 KiB
Plaintext
38 lines
1.3 KiB
Plaintext
*development-architecture*
|
|
|
|
Architecture
|
|
************
|
|
|
|
The eclim architecture is pretty straight forward. Commands issued by
|
|
a user in vim are relayed via nailgun
|
|
(http://www.martiansoftware.com/nailgun/) to the running eclim daemon
|
|
and the proper command implementation is then located and executed.
|
|
|
|
Here is a diagram showing the sequence in a bit more detail:
|
|
|
|
[diagram]
|
|
|
|
The commands which are executed on the eclimd side are also fairly
|
|
simple. They accept an object containing the command line parameters
|
|
passed into the eclim invocation and then return an object (String,
|
|
Collection, etc) which is converted to a json response. Below is a
|
|
simple class diagram showing the hierarchy of a couple typical
|
|
commands.
|
|
|
|
[diagram]
|
|
|
|
Another important aspect of eclim's architecture is support for
|
|
plugins. Plugins for eclim are bundled as eclipse plugins with their
|
|
auto start attribute set to false. When the eclim daemon starts it
|
|
will locate and load any eclipse plugin with an 'org.eclim.' prefix.
|
|
|
|
When a plugin is loaded, eclim will locate the plugin's required
|
|
resources provider and invoke its initialize method which will then
|
|
inject its resources (messages, command options, etc) into eclim and
|
|
register any new commands.
|
|
|
|
Here is graphical representation of this process:
|
|
|
|
[diagram]
|
|
|
|
vim:ft=eclimhelp |