Essentials Plugin Development
What are Essentials plugins?
Essentials plugins are plugins for Hippo's setup application (Essentials being the technical name for Hippo's setup application). Essentials plugins typically add a feature or a tool to the setup application, with the ultimate goal to ease the process of building and maintaining new Hippo projects.
Who creates them?
A basic set of Essentials plugins has been created by Hippo. The intent is that Hippo will continue creating Essentials plugins to keep Hippo's setup application attractive to Hippo developers, and as a means to establish Hippo developer best practices.
Besides that, Hippo is busy building an Essentials Plugin SDK, allowing 3rd parties to develop and contribute their own Essentials plugins. The concepts and processes relevant to developing Essentials plugins are documented here.
An Essentials plugin consists of a number of building blocks. You can find a graphical representation of Hippo's setup application, including Essentials plugins, here. When you zoom in on an individual Essentials plugin, it would look approximately like this:
The Plugin Descriptor
Plugin Descriptors introduce the plugin to the setup dashboard. They contain sufficient information for the dashboard to retrieve and install the plugin JAR. Plugin descriptors need to be accessible outside the plugin JAR.
The Plugin Front-End
The Plugin contributes a "panel" to the dashboard UI in the form of an HTML fragment and an associated Angular.js controller. Once the plugin is installed in the dashboard, the dashboard can show the plugin UI to the dashboard user. If the plugin comes with a REST Resource on the back-end, the Angular controller may communicate with it.
The Plugin Back-End
At the back-end, a REST Resource can be mounted dynamically as a REST end-point of the setup web application. The resource handles REST calls from the front-end.
For changing the Hippo project sources and/or repository, the Essentials Plugin SDK provides support for installation instructions. If the plugin sports a packageFile, its instructions are executed during plugin installation to change the Hippo project.
Also, the back-end can provide feedback to the UI/dashboard user.
The Plugin JAR
Packaged together, the front-end and back-end make up the plugin JAR. It is typically deployed to a Maven repository to which your local Maven installation has access. For the front-end to be available in the dashboard, the corresponding resources need to be packaged as a Servlet 3.0 web fragment.