Ross Lamont created NETBEANS-8:
----------------------------------

             Summary: Make api.xml.ui SPI a properly pluggable SPI.
                 Key: NETBEANS-8
                 URL: https://issues.apache.org/jira/browse/NETBEANS-8
             Project: Netbeans
          Issue Type: Improvement
          Components: xml - Schema
    Affects Versions: 8.2, 9.0
            Reporter: Ross Lamont


h3. Primary Justification

According to [a common SPI 
definition|https://en.wikipedia.org/wiki/Service_provider_interface], an SPI 
should be extendable by _third parties_, and can be used to enable framework 
extension and replaceable components. A typical example is the Java Service 
Provider Framework.

As a public and official API, it is doubtful the spi portion of the XML Tools 
API UI meets this definition.  Because there is no runtime extension loading 
mechanism provided, it is not really possible for third parties to provide 
pluggable behaviour for existing clients of the API.

h3. Motivation

XML Validation techniques have moved on a long way since the original XML 
Validation code was written.  The SPI seems to imply that the Validation 
function could be replaced by code in a plugin.  Whilst it could be argued that 
this should probably never have been an SPI, given that it is an official SPI, 
it should be upgraded to offer true SPI semantics.

h3. Patch details

The attached patch adds a factory class to the API to enable clients to create 
action cookies from third parties.  An SPI interface and default registered 
implementation are also provided for third parties to implement, and to wrap 
the existing functionality.

No existing API or SPI has been changed, although some existing javadoc has 
been updated.

As part of the patch, org.netbeans.modules.xml.XMLDataObject has been updated 
to utilise the new functionality.  Other clients tend to be very specific and 
it seems unnecessary to update these.  There is a commented out stub (with 
javadoc) in the API factory class which suggests a mechanism to serve these 
more specific use cases which can be implemented if this improvement is agreed 
to have merit.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to