java.lang.Object
org.gjt.sp.jedit.ServiceManager
A generic way for plugins (and core) to provide various API extensions.
To use a service from a plugin, add a piece of code somewhere that calls
Services are loaded from files named services.xml inside the
plugin JAR. A service definition file has the following form:
<?xml version="1.0"?>
<!DOCTYPE SERVICES SYSTEM "services.dtd">
<SERVICES>
<SERVICE NAME="service name" CLASS="fully qualified class name">
// BeanShell code evaluated when the sevice is first activated
</SERVICE>
</SERVICES>
The following elements are valid:
-
SERVICESis the top-level element and refers to the set of services offered by the plugin. -
A
SERVICEcontains the factory method for this service singleton. The ServiceManager manages named singletons created from these factory methods. It has two attributes, both required:NAMEandCLASS. TheCLASSattribute must be the name of a known sevice type; see below. -
A
SERVICEelement should the BeanShell code that returns a new instance of the named class. Note that this code can returnnull.
services.xml file.
Some core services are listed below:
FoldHandlerFoldPainterVFSEncodingEncodingDetectorStatusWidgetFactoryDockingFrameworkProviderJEditTrayIcon
getServiceTypes().
To use a service from a plugin, add a piece of code somewhere that calls
getServiceNames(String) and getService(String,String).- Since:
- jEdit 4.2pre1
- Version:
- $Id: ServiceManager.java 25067 2020-03-29 16:44:44Z kpouer $
- Author:
- Slava Pestov
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA FoldHandler based on the ServiceManager -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <E> EgetService(Class<E> clazz, String name) Returns an instance of the given service.static ObjectgetService(String clazz, String name) Returns an instance of the given service.static String[]getServiceNames(Class clazz) static String[]getServiceNames(String clazz) Returns the names of all registered services with the given class.static String[]Returns all known service class types.static voidloadServices(PluginJAR plugin, URL uri, PluginJAR.PluginCacheEntry cache) Loads aservices.xmlfile.static voidregisterService(String clazz, String name, String code, PluginJAR plugin) Registers a service.static voidunloadServices(PluginJAR plugin) Removes all services belonging to the specified plugin.static voidunregisterService(String clazz, String name) Unregisters a service.
-
Constructor Details
-
ServiceManager
public ServiceManager()
-
-
Method Details
-
loadServices
Loads aservices.xmlfile.- Since:
- jEdit 4.2pre1
-
unloadServices
Removes all services belonging to the specified plugin.- Parameters:
plugin- The plugin- Since:
- jEdit 4.2pre1
-
registerService
Registers a service. Plugins should provide aservices.xmlfile instead of calling this directly.- Parameters:
clazz- The service classname- The service namecode- BeanShell code to create an instance of thisplugin- The plugin JAR, or null if this is a built-in service- Since:
- jEdit 4.2pre1
-
unregisterService
Unregisters a service.- Parameters:
clazz- The service classname- The service name- Since:
- jEdit 4.2pre1
-
getServiceTypes
Returns all known service class types.- Since:
- jEdit 4.2pre1
-
getServiceNames
Returns the names of all registered services with the given class. For example, calling this with a parameter of "org.gjt.sp.jedit.io.VFS" returns all known virtual file systems.- Parameters:
clazz- The class name- Since:
- jEdit 4.2pre1
-
getServiceNames
-
getService
Returns an instance of the given service. The first time this is called for a given service, the BeanShell code is evaluated. The result is cached for future invocations, so in effect services are singletons.- Parameters:
clazz- The service classname- The service name- Since:
- jEdit 4.2pre1
-
getService
Returns an instance of the given service. The first time this is called for a given service, the BeanShell code is evaluated. The result is cached for future invocations, so in effect services are singletons.- Parameters:
clazz- The service classname- The service name- Returns:
- the service instance
- Since:
- jEdit 4.4pre1
-