Customizing Oxygen XML WebApp Plugins

We currently provide support for the following extension types:

  1. The URLStreamHandler extensions can be used to integrate the WebApp with CMS-es or XML databases. There is an example URLStreamHandler provided in oXygen XML SDK project in the oxygen-sample-plugins/oxygen-sample-plugin-custom-protocol folder. The extension uses the cproto protocol to access the file system of the server and can be used as a starting point.
    Note: For more details about implementing an authentication mechanism, see the How To Make WebApp Use the CMS Authentication Mechanism topic.
  2. In the WorkspaceAccess extensions most of the methods used to configure the oXygen GUI are unavailable, but the extensions can still be used, for example, to configure a javax.xml.transform.URIResolver.
    Note: The ro.sync.exml.workspace.api.PluginWorkspace instance passed to the extension also implements the ro.sync.ecss.extensions.api.webapp.access.WebappPluginWorkspace interface and provides access to some Oxygen XML WebApp-specific functionality.
  3. The WebappServlet extension allows you to provide an implementation of a servlet-like interface (ro.sync.ecss.extensions.api.webapp.plugin.WebappServletPluginExtension) that will be dynamically loaded by the WebApp. Your implementation will also provide the path to the location where the servlet will be exposed.

Loading plugin-related custom JavaScript code

If your plugin needs accompanying JavaScript code to be loaded and executed on the client-side you can bundle it together with you plugin code. Oxygen XML WebApp loads all files with the .js extension located in the web folder of the plugin.

Adding the plugins in the WebApp

If you have already developed such oXygen plugins, they can be added in the bundle-plugin/dropins folder in the Maven project.

If you are developing a new oXygen plugin you are encouraged to use as a starting point any of the existing plugins. Then you should add the resulting Maven project as a dependency (or even a sub-module) in the oxygen-sample-plugins module.