The ESB Action View is an Eclipse plug-in that shows ESB actions found on a project's classpath. These actions are grouped by Java package, and the view works with the Eclipse Java Development Tools (JDT) to show JavaDoc and open associated source code. This view is shown below:
The ESB Action View appears on the right-hand side of the workbench. For the selected project ("firstTest"), the ESB built-in action "GroovyActionProcessor" is selected, and its JavaDoc appears in the JavaDoc view on the bottom. Notice also that user-defined actions (here "TestAction" shown at the bottom of the ESB Action View) also appear.
Why is this view interesting? While is it certainly true that you can get the same information directly from the Eclipse Java Package Explorer view (shown on the left-hand side of the workbench), the ESB actions contained therein are scattered across jar files, and you have to search for them yourself. The ESB Action View takes care of this search, and presents the ESB actions in an easy format for learning and using.
Further, the ESB Action View is associated with the Graphical Service Designer (JBIDE-2068). Since the main feature of the Graphical Service Designer is the ability to diagram ESB action chains, we will need something like the ESB Action View as a design palette.
Installation and Usage
The ESB Action View is available in JBoss Tools SVN at:
and was built using the Eclipse Gaynmede J2EE Developers package. I've also installed the latest build of JBoss Tools 3. Finally, since we've interested in JBoss ESB development, we'll also need the JBoss ESB server. I used JBESB 4.4GA for development, though other versions (including SOA-P) should be fine.
Once you have these installed, the next step is to create a Java project with the ESB jars on the classpath. The easiest way to do this (and to deploy directly to the ESB) is to use the ESB project wizard in JBT 3. Whichever way you configure the classpath for the JBoss ESB jars, then next thing you'll want to do is associate the JavaDoc (otherwise the JavaDoc view will complain that no JavaDoc is found). For example, here is the Eclipse classpath container for my installation of JBESB (which I've cleverly named "JBoss ESB Runtime"):
Since most of the ESB actions we're interested in are located in jbossesb-rosetta.jar, I've located that jar in the JBoss ESB Runtime classpath folder, right clicked, selected "Properties," and set the JavaDoc location to that supplied with the JBESB install:
In theory you should also do the same for the source files (so Eclipse can open the Java source directly from the ESB Action View), but see below for a problem....
Note: If you can just attach source, then you do not have to attach the JavaDoc separately, as Eclipse will extract any JavaDoc from the provided source files.
As a proof of concept and not a product-ready component, there currently are a number of limitations to be aware of in the ESB Action View:
- Source code attachments: In theory you can point to a source code archive or directory and JDT knows how to open source from there based on selected class files. I can't seem to make this work at the moment, so if anyone has some success, please let me know! Note that this mechanism is standard JDT -- the ESB Action View does nothing special here -- so if you can make it work with regular Eclipse JDT components, it should also work straight away with the ESB Action View.
Update, February 5, 2009: This turns out to be a bug in how source code attachments are handled in JBT/JBDS. See JBIDE-3733 for details.
- Transitive classpaths: The ESB Action View currently does not take into account referenced projects (which could supply additional ESB actions). There is no technical problem with doing this, it's just not implemented in the current version.
- There's some stupid code ignoring re-initialization exceptions thrown if the ESB Action View is closed and then re-opened in the same instance of the Eclipse workbench. Interestingly, these exceptions don't prevent the view from working correctly, so I've just coded around them for the moment. Obviously it would be nice to figure out and correct what is actually wrong here.
Part of the reason for "executable comments" is to try out ideas and see how they actually work in code. During the process of creating the ESB Action View, a number of items emerged:
- We'll need some way of distributing the JBESB JavaDoc and source code in a form that can be consumed by the tools. Currently (I believe) only the community edition comes with JavaDoc, and neither the community editor nor product come with source archives.
- It would be useful to have the server runtime tools in JBT attach JavaDoc and source code (like the JRE configurations in Eclipse do), so different versions of the ESB runtime can be supported by reference to the classpath container given for a project.
- Likewise, it would be useful to configure JBESB configuration descriptors (like jboss-esb.xsd) from a known location in the runtime definition, so tools can dynamically drive configuration based on version-specific requirements.