Class ServletPluginConfigExtension
- java.lang.Object
-
- ro.sync.ecss.extensions.api.webapp.plugin.ServletPluginExtension
-
- ro.sync.ecss.extensions.api.webapp.plugin.ServletPluginConfigExtension
-
- All Implemented Interfaces:
PluginExtension
@API(type=EXTENDABLE, src=PUBLIC) public abstract class ServletPluginConfigExtension extends ServletPluginExtension
This class should be extended to create a configuration page for a Web Author plugin. For common use-cases, only the abstract methods should be implemented/overridden.
This class creates an HTML form that will be presented in the Administration Page to the user to configure some options. The options will be applied for all the users.
These options can be read from the server-side code like in the code snippet below:
PluginWorkspaceProvider.getPluginWorkspace().getOptionsStorage().getOption("option_name", "default_value");
The options can be read from client-side like in the code snippet below:
sync.options.PluginsOptions.getClientOption('option_name');
Make sure to call super.init() in the extended class otherwise you won't be able to manipulate the options.
- Since:
- 26
-
-
Field Summary
-
Fields inherited from class ro.sync.ecss.extensions.api.webapp.plugin.ServletPluginExtension
config
-
-
Constructor Summary
Constructors Constructor Description ServletPluginConfigExtension()
In the derived class make sure to set the default options.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
doDelete(HttpServletRequest req, HttpServletResponse resp)
This method should return a plugin to its default options.void
doGet(HttpServletRequest req, HttpServletResponse resp)
This method responds with the plugin configuration page (html/css/js).void
doPut(HttpServletRequest req, HttpServletResponse resp)
The request body of this request should contain a JSON object of the options to set, containing only key-value pairs with value being a string and not an object.java.util.Map<java.lang.String,java.lang.String>
getDefaultOptions()
protected java.lang.String
getOption(java.lang.String key, java.lang.String defaultValue)
Returns the option for the given key or the default value if the key doesn't exist.abstract java.lang.String
getOptionsForm()
Implement this method to return an HTML form containing the options which should be modified using the administration page.abstract java.lang.String
getOptionsJson()
Returns the options available of the client-side in JSON format.abstract java.lang.String
getPath()
Should be implemented to return the relative path handled by this plugin.void
init()
Derived classes should make sure to call this method.boolean
requiresAuthorization()
PluginConfigExtensions will only serve content if the user is authenticated.protected void
saveOptions()
Saves the set options to disk.java.lang.String
serializeMapToJSON(java.util.Map<java.lang.String,java.lang.Object> map)
Serializes a map to a JSON string.void
setDefaultOptions(java.util.Map<java.lang.String,java.lang.String> defaultOptions)
Sets the default options for this plugin configuration extension.protected void
setOption(java.lang.String key, java.lang.String value)
Sets the value of an option referenced by its key.-
Methods inherited from class ro.sync.ecss.extensions.api.webapp.plugin.ServletPluginExtension
doPost, getServletConfig, init, service
-
-
-
-
Method Detail
-
getPath
public abstract java.lang.String getPath()
Should be implemented to return the relative path handled by this plugin. The path should be unique among other webapp servlet plugins paths and not an empty String. and should contain only lower case letters or the '-' sign. Example: "plugin-path".- Specified by:
getPath
in classServletPluginExtension
- Returns:
- The path at which the servlet will be accessed.
-
init
public void init() throws ServletException
Derived classes should make sure to call this method.- Overrides:
init
in classServletPluginExtension
- Throws:
ServletException
- Thrown to respect the interface
-
doGet
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
This method responds with the plugin configuration page (html/css/js).- Overrides:
doGet
in classServletPluginExtension
- Parameters:
req
- The HTTP requestresp
- The HTTP response- Throws:
ServletException
- To respect the interfacejava.io.IOException
- Thrown by getWriter
-
doPut
public void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
The request body of this request should contain a JSON object of the options to set, containing only key-value pairs with value being a string and not an object. Derived methods should use setOption in this method. And afterwards call saveOptions().- Overrides:
doPut
in classServletPluginExtension
- Parameters:
req
- The HTTP request objectresp
- The HTTP response object- Throws:
ServletException
- To respect the interfacejava.io.IOException
- If the options file is not found or storing the options encounters an error
-
doDelete
public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
This method should return a plugin to its default options.
It sets the options back to their defaults and saves them on disk.
In derived classes return your plugin to the default options and call the super method to set the options to the default values and save them on disk.
- Overrides:
doDelete
in classServletPluginExtension
- Parameters:
req
- The HTTP request objectresp
- The HTTP response object- Throws:
ServletException
- To respect the interfacejava.io.IOException
- When the options file is not found or storing options encounters an error
-
getOption
protected java.lang.String getOption(java.lang.String key, java.lang.String defaultValue)
Returns the option for the given key or the default value if the key doesn't exist.- Parameters:
key
- The key for the option to returndefaultValue
- The value to return if the key doesn't exist- Returns:
- The option for the given key or the default value if the key doesn't exist
-
setOption
protected void setOption(java.lang.String key, java.lang.String value)
Sets the value of an option referenced by its key.- Parameters:
key
- The key of the option to setvalue
- The value of the option to set
-
saveOptions
protected void saveOptions() throws java.io.IOException
Saves the set options to disk.- Throws:
java.io.IOException
- Couldn't save options.
-
getDefaultOptions
public java.util.Map<java.lang.String,java.lang.String> getDefaultOptions()
- Returns:
- the defaultOptions
-
setDefaultOptions
public void setDefaultOptions(java.util.Map<java.lang.String,java.lang.String> defaultOptions)
Sets the default options for this plugin configuration extension.If you want the default values for your options to be empty/null make sure to set them as empty/null, don't leave them out of the defaultOptions map.
- Parameters:
defaultOptions
- the defaultOptions to set
-
getOptionsForm
public abstract java.lang.String getOptionsForm()
Implement this method to return an HTML form containing the options which should be modified using the administration page. The form inputs name attribute should be the option name.- Returns:
- The options form representing an html form with inputs where every input's name attribute represents the name of the option which we want to set.
-
getOptionsJson
public abstract java.lang.String getOptionsJson()
Returns the options available of the client-side in JSON format. These options will be available for all type of users so you should not include sensitive options that should require authorization.- Returns:
- the options available on client formated as JSON.
-
requiresAuthorization
public final boolean requiresAuthorization()
PluginConfigExtensions will only serve content if the user is authenticated.- Overrides:
requiresAuthorization
in classServletPluginExtension
- Returns:
- True to require authorization
-
serializeMapToJSON
public java.lang.String serializeMapToJSON(java.util.Map<java.lang.String,java.lang.Object> map)
Serializes a map to a JSON string.- Parameters:
map
- the map to serialize to JSON string.- Returns:
- the map serialized as a JSON.
-
-