Svatopluk Dedic created NETBEANS-4795:
-----------------------------------------
Summary: Formalize reuse of registered services
Key: NETBEANS-4795
URL: https://issues.apache.org/jira/browse/NETBEANS-4795
Project: NetBeans
Issue Type: New Feature
Components: platform - Lookup
Affects Versions: 11.3
Reporter: Svatopluk Dedic
Assignee: Svatopluk Dedic
During {{commit-validation}} cleanup, I've found out that it's relatively
commont to *reuse other module services* in layer registration. The most reused
was HTML completion provider, Word completion provider. But also Java Indexer
was reused in Groovy.
Currently this is done by *hardcoding classname* of the original provider
implementation - but for example {{HtmlCompletionProvider}} is not a public
API. Well, now it is, since if the class was moved, all web scripting modules
would fail to complete tags.
Another approach is to use *shadow to filename*, which is again not an API. In
the case of Java Indexer, the filename has changed because manual XML
registration was replaced by an annotation - with an undefined (impl-class
based) filename generation).
For these cases, I would like to have {{id}} attribute introduced for service
providers, which would declare that the *id* is part of the module public API:
the filename will be then formed as *serviceclass-modulecnb-id* to be stable
and moderately unique. The annotation processor could check that (for NB
modules; or maybe as a part of the documentation build step ?), the ID is
mentioned in {{arch.xml as an supplemental API.}}
For reference, I'd like to introduce an annotation, which would register *a
foreign implementation*, so e.g. package-info.java could be annotated as with
the templates. The reference would contain attributes
* module CNB
* service class
* ID
* optional true/false
The Processor would ensure that the appropriate dependency is declared (weak =
Recommends, otherwise Needs), that the target exists AND is indeed a declared
API (perhaps an articial attribute in the layer).
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists